首页 > 语言 > PHP > 正文

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

2024-09-04 11:44:37
字体:
来源:转载
供稿:网友

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

网站上传图片后生成缩略图应该是非常常用的功能了,通常来讲为了网站显示美观,缩略图会是同样尺寸,比如最近笔者做的一个站点,缩略图规格要求都是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. //开源软件:Vevb.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);

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表