php实现生成缩略图填充白边的功能

介绍

这篇文章主要介绍”php实现生成缩略图填充白边的功能”,在日常操作中,相信很多人在php实现生成缩略图填充白边的功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“php实现生成缩略图填充白边的功能”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

网站上传图片后生成缩略图应该是非常常用的功能了,通常来讲为了网站显示美观,缩略图会是同样尺寸,比如最近笔者做的一个站点,缩略图规格要求都是160×120。但是如果上传的图片比例和缩略图不一致,直接缩放的话就会导致图片变形,这样体验肯定就不好了。于是笔者想了一个折中的办法,就是缩小后添加白边的方法。

源图,尺寸是600×366:

 php实现生成缩略图填充白边的功能

最终生成的效果图:

 php实现生成缩略图填充白边的功能

代码相对比较长些,下面简单说下思路:

先将源图按比例生成缩略图,并且宽不大于160年,高不大于120,例如上图会先生成160×98的缩略图。
新建一个160×120的白色背景图片,将上一步生成的缩略图居中放置到这张图片上就好了。
最终代码如下:

代码如下:


//源图的路径,可以是本地文件,也可以是远程图片
$ src_path=& # 39; 1. jpg # 39;;
//最终保存图片的宽宽度=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=imagecreatetruecolor (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=imagecreatetruecolor(宽度、高度美元);
$颜色=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);

//输出图片
头(& # 39;- type:图像/jpeg # 39;);
imagejpeg ($ final_image);

php实现生成缩略图填充白边的功能