Blogger Information
Blog 17
fans 0
comment 0
visits 23428
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
TP5图片上传之后的压缩
星辰幽梦
Original
2529 people have browsed it

TP5学习过程中的一些记录一(图片上传之后的压缩)

其中getMime()是获取图片最原始的图片类型而不是后缀名,因为只获取后缀名的话容易出现的一种状况就是 —— 当用户将png后缀改为jpg时会报错,而且使用getMime()需要php支持fileinfo扩展,png的压缩效果不是很好,我就没有用png压缩,而且png压缩之后容易有一些问题(我遇到的问题就是透明背景的压缩之后变成黑色背景了,不知道怎么回事)

  1. $file = request()->file($fileName);
  2. if($fileInfo){ // 压缩图片
  3. // 输出 jpg
  4. $imageType = $fileInfo->getExtension(); //输出的为图片后缀名(.jpg/.png)
  5. // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
  6. $image = $fileInfo->getSaveName(); //输出的为uploads后面的路径,可以打印查看
  7. if(explode('/',$fileInfo->getMime())[1] == 'jpg' || explode('/',$fileInfo->getMime())[1] == 'jpeg'){
  8. // 获取完整路径
  9. $image = $dir .'/'. $image;
  10. // 加载图片资源
  11. $src = @imagecreatefromjpeg($image);
  12. list($width,$height) = getimagesize($image); //获取图片的高度
  13. $newwidth = $width; //宽高可以设置, 楼主是想让它的宽高不变才没赋值
  14. $newheight = $height;
  15. $tmp = imagecreatetruecolor($newwidth,$newheight); //生成新的宽高
  16. imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); //缩放图像
  17. $output = imagejpeg($tmp, $image, 70); //第三个参数(0~100);
  18. }else if(explode('/',$fileInfo->getMime())[1] == 'png'){ // png 压缩效率不稳定
  19. $image = $dir.'/' . $image;
  20. $src = @imagecreatefrompng($image);
  21. list($width,$height) = getimagesize($image);
  22. $newwidth = $width;
  23. $newheight = $height;
  24. $tmp = imagecreatetruecolor($newwidth,$newheight);
  25. /* --- 用以处理缩放png图透明背景变黑色问题 开始 --- */
  26. $color = imagecolorallocate($tmp,255,255,255);
  27. imagecolortransparent($tmp,$color);
  28. imagefill($tmp,0,0,$color);
  29. /* --- 用以处理缩放png图透明背景变黑色问题 结束 --- */
  30. imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  31. $output = imagepng($tmp, $image, 9); //这个图片的第三参数(1~9)
  32. // imagedestroy($tmp);
  33. }
  34. }

最后推荐一个我觉得非常好用的图片压缩网站,压缩效率很高

https://tinypng.com/

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post