我有一个包含大约1500张JPEG图像的网站,我想将它们全部压缩。浏览目录不是问题,但我似乎找不到一个可以压缩已经存在于服务器上的JPEG图片并替换旧图片的函数(我不想上传新的图片)。
PHP是否具有内置的此类功能?如果没有,我该如何将文件夹中的JPEG读取到脚本中?
谢谢。
我有一个包含大约1500张JPEG图像的网站,我想将它们全部压缩。浏览目录不是问题,但我似乎找不到一个可以压缩已经存在于服务器上的JPEG图片并替换旧图片的函数(我不想上传新的图片)。
PHP是否具有内置的此类功能?如果没有,我该如何将文件夹中的JPEG读取到脚本中?
谢谢。
我更喜欢使用IMagick扩展来处理图像。GD对于较大的文件使用太多内存。以下是PHP手册中Charles Hall提供的代码片段:
$img = new Imagick();
$img->readImage($src);
$img->setImageCompression(Imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(90);
$img->stripImage();
$img->writeImage($dest);
$img->clean();
你没有说明是否使用了GD库,所以我假设你使用了它。
$img = imagecreatefromjpeg("myimage.jpg"); // load the image-to-be-saved
// 50 is quality; change from 0 (worst quality,smaller file) - 100 (best quality)
imagejpeg($img,"myimage_new.jpg",50);
unlink("myimage.jpg"); // remove the old image
vlzvl提供的解决方案很好用。不过,使用这个解决方案,你还可以通过改变代码的顺序来覆盖一张图片。
$image = imagecreatefromjpeg("image.jpg");
unlink("image.jpg");
imagejpeg($image,"image.jpg",50);
这可以让您压缩现有的图像并将其存储在相同的位置和相同的文件名中。
imagejpeg()
默认会覆盖原始图像吗? - Matt您需要使用PHP GD库来完成这个任务... 大多数服务器默认已经安装了它。如果您搜索“resize image php gd”,会发现有很多示例。
例如,您可以参考这个页面http://911-need-code-help.blogspot.nl/2008/10/resize-images-using-phpgd-library.html