PHP生成的缩略图填充白边(等效缩略图方案) 浏览:556

上传图片后生成的缩略图应该是一个非常常见的函数。通常,为美丽的网站,例如缩略图大小相同,,我最近做了网站,和缩略图规格是160 x 120。但如果上传的图片的缩略图的比例不一致,直接缩放会导致图像变形,所以经验肯定是不好的。所以我想妥协,即减少方式加白边。

源代码图,大小为600×366:



最终生成效果图:



代码比较长,下面是一个简单的想法:

首先,源映射与缩略图成比例,宽度不超过160,高度不超过120。例如,上面的数字将是160×98缩略图。
一个新的160 * 120白色背景图片是建立在照片的中间放置上一个缩略图,并把它放在OK。
最后的代码如下所示:

复制代码代码如下所示:
路径源映射,可以是本地文件,也可以是远程文件。
src_path美元= 1 .jpg;
最后的保存图片宽度
宽度= 160;
最后的照片保存的高
身高= 120;

源映射对象
src_image美元= imagecreatefromstring(file_get_contents($ src_path));
src_width = imagesx美元(美元src_image);
src_height = imagesy美元(美元src_image);

缩略图生成的比例
tmp_image_width = 0美元;
tmp_image_height = 0美元;
如果(src_width美元/美元/美元src_height宽度> = $高度){
tmp_image_width美元= $宽度;
tmp_image_height美元=圆(合tmp_image_width * src_height美元/美元src_width);
{人}
tmp_image_height美元= $高度;
tmp_image_width美元=圆(合tmp_image_height * src_width美元/美元src_height);
}

tmpimage美元=新建一个真彩色图像(tmp_image_width美元,美元tmp_image_height);
imagecopyresampled(tmpimage美元,src_image美元,0, 0, 0,0,tmp_image_width美元,tmp_image_height美元美元美元,src_width,src_height);

添加/白边
final_image美元=新建一个真彩色图像($美元宽度,高度);
颜色= imagecolorallocate美元(美元final_image,255, 255, 255);
imagefill(final_image美元,0, 0美元,颜色);

X元=圆(($宽度至tmp_image_width) / 2);
Y元=圆(($高度至tmp_image_height) / 2);

imagecopy(final_image美元美元美元,tmpimage,X、Y元,0, 0美元美元,tmp_image_width,tmp_image_height);

输出画面
头('content-type:图像/ JPEG);
imagejpeg($ final_image);
推荐文章1
广告