PHP图片无损压缩的处理方法
2018-02-19 20:09:25
•
阅读
打赏
本篇文章主要介绍了PHP图片无损压缩的处理方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
imagecopyresized函数
拷贝部分图像并调整大小,将一幅图像中的一块矩形区域拷贝到另一个图像中。
imagecopyresampled函数
重采样拷贝部分图像并调整大小,将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值。
改函数减小了图像的大小且保持了极大的清晰度。如果源和目标的宽度和高度不同,则会进行相应的图像收缩和拉伸。坐标指的是左上角。
常用php压缩代码如下:
header("Content-type: image/jpeg");
$file = "aa.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函数。
新的php代码:
/**
* 压缩图片
* @param string $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;
}
}
/**
* 判断是否gif动画
* @param string $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图片无损压缩的处理方法的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型