php没有紧缩,php怎样完成图片紧缩不失真_后端开发

php图片紧缩不失真的完成要领:起首设置图片紧缩比;然后经由过程“getimagesize”函数猎取原图尺寸;末了运用“imagecopyresampled”函数紧缩图片即可。

c9373ca45f8ec10593861f0a1d457515.png

引荐:《PHP视频教程》

PHP处理图片无损紧缩

代码以下:

header("Content-type: image/jpeg");

$file = "111.jpg";

$percent = 1.5; //图片紧缩比

list($width, $height) = getimagesize($file); //猎取原图尺寸

//缩放尺寸

$newwidth = $width * $percent;

$newheight = $height * $percent;

$src_im = imagecreatefromjpeg($file);

$dst_im = imagecreatetruecolor($newwidth, $newheight);

imagecopyresized($dst_im, $src_im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

imagejpeg($dst_im); //输出紧缩后的图片

imagedestroy($dst_im);

imagedestroy($src_im);

我发现用php的imagecopyresized把大图片缩成小图片时,图片会变得很隐约,这时候要提拔清晰度不如用 imagecopyresampled 替代 imagecopyresized或许会更好。

注:紧缩有丧失是必定的,看的清晰与否实际上就是是不是接收这个局限的问题.比方你图象上原图有些点是2px,然则你紧缩5倍,那末这些点就会消逝。

/**

* desription 紧缩图片

* @param sting $imgsrc 图片途径

* @param string $imgdst 紧缩后保留途径

*/

function image_png_size_add($imgsrc,$imgdst){

list($width,$height,$type)=getimagesize($imgsrc);

$new_width = ($width>600?600:$width)*0.9;

$new_height =($height>600?600:$height)*0.9;

switch($type){

case 1:

$giftype=check_gifcartoon($imgsrc);

if($giftype){

header('Content-Type:image/gif');

$image_wp=imagecreatetruecolor($new_width, $new_height);

$image = imagecreatefromgif($imgsrc);

imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

imagejpeg($image_wp, $imgdst,75);

imagedestroy($image_wp);

}

break;

case 2:

header('Content-Type:image/jpeg');

$image_wp=imagecreatetruecolor($new_width, $new_height);

$image = imagecreatefromjpeg($imgsrc);

imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

imagejpeg($image_wp, $imgdst,75);

imagedestroy($image_wp);

break;

case 3:

header('Content-Type:image/png');

$image_wp=imagecreatetruecolor($new_width, $new_height);

$image = imagecreatefrompng($imgsrc);

imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

imagejpeg($image_wp, $imgdst,75);

imagedestroy($image_wp);

break;

}

}

/**

* desription 推断是不是gif动画

* @param sting $image_file图片途径

* @return boolean t 是 f 否

*/

function check_gifcartoon($image_file){

$fp = fopen($image_file,'rb');

$image_head = fread($fp,1024);

fclose($fp);

return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head)?false:true;

}

?>

以上就是php怎样完成图片紧缩不失真的细致内容,更多请关注ki4网别的相干文章!

收藏 | 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值