今天我们来解决一件头疼的事情。作为技术人员,我们一般传图片都知道尽量传清晰和大小适中的图片,部署的时候当然也希望客户能按说明办事,但有的客户偏偏不听,就传大的,就传大的,最终后宫服务器三千都顶不住他们的折腾,程序员心里苦,但不敢说啊,只能让代码自行解决吧。
解决前提:php版本*1,服务器*1,数据库(不需要,扔了吧)
备用函数:imagecreatetruecolor、imagecopyresampled、image_type_to_extension、getimagesize、imagedestroy
php实现图片压缩的方法:首先通过getimagesize获取图片属性,接着将原图复制到图片载体上,并按照一定比例压缩;最后输出图片即可。
很简单吧?
简单我就不用写教程了,你也不用看到这篇文章了。来,大郎,随我一起走:
list($width, $height, $img_type, $attr) = getimagesize($img);//获取图片大小等属性
//构建跟该图片属性一样的图片对象
$imageinfo = array( ‘width’ => $width, ‘height’ => $height, ‘type’ => image_type_to_extension($img_type, false), ‘attr’ => $attr );
//用fun函数执行
$fun = “imagecreatefrom” . $imageinfo[‘type’];
$image = $fun($img);
//注意这里的percent,是压缩的比例,比如压缩10%,那percent=90%;
new_width = $imageinfo[‘width’] * $percent;
$new_height = $imageinfo[‘height’] * $percent;
$image_thump = imagecreatetruecolor($new_width, $new_height);
//将原图复制带图片载体上面,并且按照一定比例压缩,极大的保持了清晰度 imagecopyresampled($image_thump, $image, 0, 0, 0, 0, $new_width, $new_height, $imageinfo[‘width’], $imageinfo[‘height’]);
//最后自己new出来的资源别忘了销毁,别让人知道你还不会
imagedestroy($image);
//可图片在哪?不着急,还在。别忘了告诉代码你要生成什么类型的图片
$image = $image_thump;
$func = ‘image’ . $imageinfo[‘type’];
//然后告诉他你要生成在哪里,记住服务器资源有限,别到处乱生,不然以后滴血认亲都找不到它
$func($image,”图片生成地址”)
至此,php压缩图片到处完成,