PHP创建缩略图造成图片质量低下的完美解决办法
程序员文章站
2022-05-14 16:50:50
...
PHP创建缩略图造成图片质量低下的完美解决方法
- /**?
- [email protected]?
- [email protected]$img_name???图片路径?
- [email protected]$max_width??略图最大宽度?
- [email protected]$max_height?略图最大高度?
- [email protected]$suffix?略图后缀(如"img_x.jpg"代表小图,"img_m.jpg"代表中图,"img_l.jpg"代表大图)?
- [email protected]?
- */??
- function?thum($img_name,$max_width,$max_height,$suffix){??
- ????????$img_infos=getimagesize($img_name);??
- ????????$img_height=$img_infos[0];//图片高??
- ????????$img_width=$img_infos[1];//图片宽??
- ????????$img_extension='';//图片后缀名??
- ????????switch($img_infos[2]){??
- ????????????case?1:??
- ????????????????$img_extension='gif';??
- ????????????????break;??
- ????????????case?2:??
- ????????????????$img_extension='jpeg';??
- ????????????????break;??
- ?????????case?3:??
- ????????????????$img_extension='png';??
- ????????????????break;??
- ????????????default:??
- ????????????????$img_extension='jpeg';??
- ????????????????break;??
- ????????????}??
- ????????$new_img_size=get_thum_size($img_width,$img_height,$max_width,$max_height);//新的图片尺寸??
- ??????????
- ??????????
- ????????//print_r($new_img_size);??
- ????????//die('test');??
- ????????$img_func='';//函数名称??
- ????????$img_handle='';//图片句柄??
- ????????$thum_handle='';//略图图片句柄??
- ????????switch($img_extension){??
- ????????????case?'jpg':??
- ????????????????$img_handle=imagecreatefromjpeg($img_name);??
- ????????????????$img_func='imagejpeg';??
- ????????????????break;??
- ????????????case?'jpeg':??
- ????????????????$img_handle=imagecreatefromjpeg($img_name);??
- ????????????????$img_func='imagejpeg';??
- ???????????????break;??
- ????????????case?'png':??
- ????????????????$img_handle=imagecreatefrompng($img_name);??
- ????????????????$img_func='imagepng';??
- ????????????????break;??
- ????????????case?'gif':??
- ????????????????$img_handle=imagecreatefromgif($img_name);??
- ????????????????$img_func='imagegif';??
- ????????????????break;??
- ????????????default:??
- ????????????????$img_handle=imagecreatefromjpeg($img_name);??
- ????????????????$img_func='imagejpeg';?
- ????????????????break;??
- ????????????}??
- ????????/****/????
- ????????$quality=100;//图片质量??
- ????????if($img_func==='imagepng'?&&?(str_replace('.',?'',?PHP_VERSION)>=?512)){//针对php版本大于5.12参数变化后的处理情况??
- ????????????$quality=9;??
- ????????????}???
- ????????/****/??
- ????????$thum_handle=imagecreatetruecolor($new_img_size['height'],$new_img_size['width']);??
- ????????if(function_exists('imagecopyresampled')){??
- ????????????imagecopyresampled($thum_handle,$img_handle,?0,?0,?0,?0,$new_img_size['height'],$new_img_size['width'],$img_height,$img_width);??
- ????????????}else{??
- ????????????????imagecopyresized($thum_handle,$img_handle,?0,?0,?0,?0,$new_img_size['height'],$new_img_size['width'],$img_height,$img_width);??
- ????????????}??
- ????????call_user_func_array($img_func,array($thum_handle,get_thum_name($img_name,$suffix),$quality));??
- ????????imagedestroy($thum_handle);//清除句柄??
- ????????imagedestroy($img_handle);//清除句柄??
- ????}??
- ??
- /**?
- [email protected]_thum_size?获得缩略图的尺寸?
- [email protected]$width??图片宽?
- [email protected]$height?图片高?
- [email protected]$max_width?最大宽度?
- [email protected]$maxHeight?最大高度?
- [email protected]$size;?
- */??
- function?get_thum_size($width,$height,$max_width,$max_height){??
- ????$now_width=$width;//现在的宽度??
- ????$now_height=$height;//现在的高度??
- ????$size=微信
- 分享