我有一个包含大约1500张JPEG图像的网站,我想将它们全部压缩。浏览目录不是问题,但我似乎找不到压缩已经在服务器上的JPEG的函数(我不想上传新的),并替换旧的。
PHP有内置功能吗?如果没有,我如何从文件夹中读取JPEG到脚本?
感谢。
答案 0 :(得分:21)
我更喜欢使用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();
答案 1 :(得分:16)
你不知道你是否使用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
答案 2 :(得分:0)
您将需要使用php gd库...大多数服务器默认安装它。如果你搜索'resize image php gd',那里有很多例子。
例如,请查看此页面http://911-need-code-help.blogspot.nl/2008/10/resize-images-using-phpgd-library.html
答案 3 :(得分:0)
vlzvl提供的解决方案效果很好。但是,使用此解决方案,您还可以通过更改代码的顺序来覆盖图像。
$image = imagecreatefromjpeg("image.jpg");
unlink("image.jpg");
imagejpeg($image,"image.jpg",50);
这允许您压缩预先存在的图像并将其存储在具有相同文件名的相同位置。