Heim  >  Artikel  >  Backend-Entwicklung  >  php图片裁剪与缩略图示例

php图片裁剪与缩略图示例

WBOY
WBOYOriginal
2016-07-25 09:13:101030Durchsuche

在php编程中,经常会遇到图片太大且规格不统一的情况,显示的控制需要靠JavaScript来完成,用在移动设备上时显示效果不好且流量巨大,需要对现有图片库的图片进行一次处理,生成符合移动设备用的缩略图,将原来客户端JS做的工作转移到服务器端用PHP的GD库来集中处理。

要求,图片源与需要的大小:

  1. list($src_w,$src_h)=getimagesize($src_img); // 获取原图尺寸
  2. $dst_scale = $dst_h/$dst_w; //目标图像长宽比
  3. $src_scale = $src_h/$src_w; // 原图长宽比
  4. if($src_scale>=$dst_scale)
  5. {
  6. // 过高
  7. $w = intval($src_w);
  8. $h = intval($dst_scale*$w);
  9. $x = 0;
  10. $y = ($src_h - $h)/3;
  11. }
  12. else
  13. {
  14. // 过宽
  15. $h = intval($src_h);
  16. $w = intval($h/$dst_scale);
  17. $x = ($src_w - $w)/2;
  18. $y = 0;
  19. }
  20. // 剪裁
  21. $source=imagecreatefromjpeg($src_img);
  22. $croped=imagecreatetruecolor($w, $h);
  23. imagecopy($croped,$source,0,0,$x,$y,$src_w,$src_h);
  24. // 缩放
  25. $scale = $dst_w/$w;
  26. $target = imagecreatetruecolor($dst_w, $dst_h);
  27. $final_w = intval($w*$scale);
  28. $final_h = intval($h*$scale);
  29. imagecopyresampled($target,$croped,0,0,0,0,$final_w,$final_h,$w,$h);
  30. // 保存
  31. $timestamp = time();
  32. imagejpeg($target, "$timestamp.jpg");
  33. imagedestroy($target);
  34. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn