PHP实现图片压缩的原理与实现方式

  • 内容
  • 相关

 作为小站长有一个东西很宝贵,那就是网站的空间。有些人的网站空间可能自由几百兆,所以网站很多图片都是用的外链,但是这些外链随时都可能失效,这时候就需要对图片进行压缩,很多人一下想到了PS什么的,但是这个会不会太麻烦了呢?其实使用PHP很容易就可以实现这样的功能。跟之前一样,一个函数搞定,但是有两种方法,先说函数。

函数介绍

    ① ImageCopyResized() 函数在所有GD版本中有效,但其缩放图像的算法比较粗糙.
    ② ImageCopyResampled(),其像素插值算法得到的图像边缘比较平滑.质量较好(但该函数的速度稍慢).
    两个函数的参数是一样的.如下:
    ImageCopyResampled(dest,src,dx,dy,sx,sy,dw,dh,sw,sh);
    ImageCopyResized(dest,src,dx,dy,sx,sy,dw,dh,sw,sh);

    它们两个都是从原图像(src)中抓取特定位置(sx,sy)复制图像区域到目标图像(dest)的特定位置(dx,dy)。另外dw,dh指定复制的图像区域在目标图像上的大小,sw,sh指定从原图像复制的图像区域的大小。如果有ps经验的话,就相当于在原图像选择一块区域,剪切移动到目的图像上,同时有拉伸或缩小的操作。

实现方式

1.使用ImageCopyResized()函数实现

<?php
header("Content-type: image/jpeg");//文件头
$file = "1.jpg";//需要处理的图片
$percent = 1;  //图片压缩比
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);
?>


2.使用ImageCopyResampled()函数实现

<?php
header("Content-type: image/jpeg");//文件头
$file = "1.jpg";//需要处理的图片
$percent = 1;  //图片压缩比
list($width, $height) = getimagesize($file); //获取原图尺寸
//缩放尺寸
$newwidth = $width * $percent;
$newheight = $height * $percent;
$src_im = imagecreatefromjpeg($file);
$dst_im = imagecreatetruecolor($newwidth, $newheight);
imageCopyResampled($dst_im, $src_im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($dst_im); //输出压缩后的图片
imagedestroy($dst_im);//销毁
imagedestroy($src_im);
?>


本文标签:

版权声明:若无特殊注明,本文皆为《Leek》原创,转载请保留文章出处。

本文链接:PHP实现图片压缩的原理与实现方式 - https://pjax.cc/12.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

允许邮件通知