关于略缩图的事情,比较细致的问题!

彭哥 发布于 2012/04/05 08:45
阅读 416
收藏 0
PHP

1.设计师把产品略缩图定义为120px宽,180px高,但我们上传的大图片是不可能都处得标准,有的是2000*3500,有的可能是3800*2300,等等,各种长宽高都可能有。

2.上传后要生成略缩图,不要变形,又不要加空白,又要成等比高或等比宽裁剪。

3.举例,上传一张960*1000的大图,要生成120px*180的小图,960/120=8倍,但1000/180不等于8,并小于8,这时候就要取高的倍数,1000/180,得到略缩图的缩小倍数,再截图宽度为120px的宽的图像部分,成为宽为120px,高为180px的等高略缩图。同理,如宽过大也是一样。

这是个细致问题,请高手给上指点下方案,最好是一下能生成三种不同宽高度的略缩图。谢谢!

加载中
0
飞晏
飞晏

参考:http://www.oschina.net/code/snippet_155442_4865

这里面的图片处理类,我觉的不错

飞晏
飞晏
@彭哥 : 函数thumb里面: $thumbImg01 = imagecreatetruecolor(200,200); imagecopyresampled($thumbImg01,$thumbImg,0,0,$_POST['x'],$_POST['y'],200,200,$_POST['w'],$_POST['h']); 里面的两个200就是是生成的图片的大小
彭哥
彭哥
@飞晏 : 首先非常感谢你提供的这个程序地址,我想请问下,截图大小在哪控制
飞晏
飞晏
@彭哥 : thumb方法里面输出$thumbname01和$thumbname02就大图和小图的地址。我是觉的他那个转存图片的过程很详细,不管多大的缩略图都比较保真。不过这里面可能要对图片进行一些裁剪了,不知道你们的图能不能这么做。LOL
彭哥
彭哥
对不起,我没仔细看,这个例子很好很强大,就是不晓得怎么得到这个略缩图地址
彭哥
彭哥
没生成小图啊,关键是小图!谢谢!
0
h2ero
h2ero

height>width就按照width缩放,然后再裁剪,当width>height时同理。以前用CI自带的图片类时遇到过类似的问题。总之在裁剪之前也就是缩放时高度和宽度都不能小于设置的值。

 

0
beves
beves

1 、先求大图的比例,如果w/h == 2/3(浮点相等) 那么直接压缩,否则执行第二步

2、如果w/h > 2/3 那么,按宽压缩到120px,高自适应(等比压缩),执行第四步

3 、如果w/h < 2/3 那么,按高压缩到180px,宽自适应(等比压缩),执行第四部

4、创建一个120*180的新图,把压缩得到的图片,水平垂直居中放到新图上,合成一下,ok了

0
彭哥
彭哥
请给一个具体实例,谢谢!
0
郑雨涵
郑雨涵
先按比例裁剪,再缩放
0
泡不烂的凉粉
泡不烂的凉粉

我觉得截断高度不如添加空白。

截断需要知道是截断上部,下部,还是截取两边。

大概就是这样,如果实际大小宽/高 是 x/y,需求的宽/高 是a/b,
那么判断 x/y 是否大于 a/b , 如果大于,那么说明需要高度作为基准。因为宽度超标。
否则就以高度作为标准。
剩下的就不用细说了吧。 计算同比生成缩略图实际的数值,减去预期的就是需要截断的。

0
Monkey
Monkey
处理这么多干嘛,直接image. getScaledInstance(120,180,Image. SCALE_SMOOTH)
返回顶部
顶部