当前位置:Gxlcms > PHP教程 > php实现图片等比例缩放代码并且不是失真的方法

php实现图片等比例缩放代码并且不是失真的方法

时间:2021-07-01 10:21:17 帮助过:1人阅读

本文给大家分享的是使用php实现的图片等比例缩放的代码,小伙伴们可以将其集成到图片上传中去,有需要的童鞋可以参考下。

新建文件index.php,需要在统计目录下有个图片为q.jpg(可根据源码进行更改图片的名称)

源代码如下:

  1. <?php
  2. $filename="q.jpg";
  3. $per=0.3;
  4. list($width, $height)=getimagesize($filename);
  5. $n_w=$width*$per;
  6. $n_h=$height*$per;
  7. $new=imagecreatetruecolor($n_w, $n_h);
  8. $img=imagecreatefromjpeg($filename);
  9. //拷贝部分图像并调整
  10. imagecopyresized($new, $img,0, 0,0, 0,$n_w, $n_h, $width, $height);
  11. //图像
输出新图片、另存为 imagejpeg($new, "q1.jpg"); imagedestroy($new); imagedestroy($img); ?>

使用浏览器运行过后,在index.php同级的目录下会有个q1.jpg,这个图片就是等比例缩放后的图片,路径可以自己在源代码里面更改,放在自己的项目当中去或写个方法也行


有时上传图片时因为图片太大了,不仅占用空间,消耗流量,而且影响浏(图片的尺寸大小不一)。下面分享一种等比例不失真缩放图片的方法,这样,不管上传的图片尺有多大,都会自动压缩到我们设置尺寸值的范围之内。经过测试,证明实用。

  1. <?php
  2. function resizeImage($im,$maxwidth,$maxheight,$name,$filetype)
  3. {
  4. $pic_width = imagesx($im);
  5. $pic_height = imagesy($im);
  6. if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight))
  7. {
  8. if($maxwidth && $pic_width>$maxwidth)
  9. {
  10. $widthratio = $maxwidth/$pic_width;
  11. $resizewidth_tag = true;
  12. }
  13. if($maxheight && $pic_height>$maxheight)
  14. {
  15. $heightratio = $maxheight/$pic_height;
  16. $resizeheight_tag = true;
  17. }
  18. if($resizewidth_tag && $resizeheight_tag)
  19. {
  20. if($widthratio<$heightratio)
  21. $ratio = $widthratio;
  22. else
  23. $ratio = $heightratio;
  24. }
  25. if($resizewidth_tag && !$resizeheight_tag)
  26. $ratio = $widthratio;
  27. if($resizeheight_tag && !$resizewidth_tag)
  28. $ratio = $heightratio;
  29. $newwidth = $pic_width * $ratio;
  30. $newheight = $pic_height * $ratio;
  31. if(function_exists("imagecopyresampled"))
  32. {
  33. $newim = imagecreatetruecolor($newwidth,$newheight);//PHP系统函数
  34. imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);//PHP系统函数
  35. }
  36. else
  37. {
  38. $newim = imagecreate($newwidth,$newheight);
  39. imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
  40. }
  41. $name = $name.$filetype;
  42. imagejpeg($newim,$name);
  43. imagedestroy($newim);
  44. }
  45. else
  46. {
  47. $name = $name.$filetype;
  48. imagejpeg($im,$name);
  49. }
  50. }
  51. //使用方法:
  52. $im=imagecreatefromjpeg("./20140416103023202.jpg");//参数是图片的存方路径
  53. $maxwidth="600";//设置图片的最大宽度
  54. $maxheight="400";//设置图片的最大高度
  55. $name="123";//图片的名称,随便取吧
  56. $filetype=".jpg";//图片类型
  57. resizeImage($im,$maxwidth,$maxheight,$name,$filetype);//调用上面的函数

以上就是php实现图片等比例缩放代码并且不是失真的方法的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行