www.adminn.cn
站长正能量分享网!

php生成缩略图自动填充白边例子

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

今天看到这篇文章想我想到了几年前帮助一个客户做一个网站,那种要求里面就有一个宽度不足够时需要自动给图片生成白边了,下面我看到一个不错的例子整理一下给各位.

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

下面简单说下思路,先将源图按比例生成缩略图,并且宽不大于160、高不大于120,例如上图会先生成160×98的缩略图,新建一个160×120的白色背景图片,将上一步生成的缩略图居中放置到这张图片上就OK了,代码如下:

  1. //源图的路径,可以是本地文件,也可以是远程图片 
  2. $src_path = '1.jpg'
  3. //最终保存图片的宽 
  4. $width = 160; 
  5. //最终保存图片的高 
  6. $height = 120; 
  7.  
  8. //源图对象 
  9. $src_image = imagecreatefromstring(file_get_contents($src_path)); 
  10. $src_width = imagesx($src_image); 
  11. $src_height = imagesy($src_image); 
  12.  
  13. //生成等比例的缩略图 
  14. $tmp_image_width = 0; 
  15. $tmp_image_height = 0; 
  16. if ($src_width / $src_height >= $width / $height) { 
  17.     $tmp_image_width = $width
  18.     $tmp_image_height = round($tmp_image_width * $src_height / $src_width); 
  19. else { 
  20.     $tmp_image_height = $height
  21.     $tmp_image_width = round($tmp_image_height * $src_width / $src_height); 
  22.  
  23. $tmpImage = imagecreatetruecolor($tmp_image_width$tmp_image_height); 
  24. imagecopyresampled($tmpImage$src_image, 0, 0, 0, 0, $tmp_image_width$tmp_image_height$src_width$src_height); 
  25.  
  26. //添加白边 
  27. $final_image = imagecreatetruecolor($width$height); 
  28. $color = imagecolorallocate($final_image, 255, 255, 255); 
  29. imagefill($final_image, 0, 0, $color); 
  30. //开源软件:phpfensi.com 
  31. $x = round(($width – $tmp_image_width) / 2); 
  32. $y = round(($height – $tmp_image_height) / 2); 
  33.  
  34. imagecopy($final_image$tmpImage$x$y, 0, 0, $tmp_image_width$tmp_image_height); 
  35.  
  36. //输出图片 
  37. header('Content-Type: image/jpeg'); 
  38. imagejpeg($final_image);

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《php生成缩略图自动填充白边例子》
文章链接:https://www.adminn.cn/news/8148.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

本站源码仅供本地环境下学习借鉴研究使用!

源码请勿用于任何涉灰站点!净化网络,站长更有责!

支付宝扫一扫打赏