13

我有一个包含大约 1500 张 JPEG 图像的网站,我想将它们全部压缩。浏览目录不是问题,但我似乎找不到压缩服务器上已经存在的 JPEG 的功能(我不想上传新的),并替换旧的。

PHP是否有内置函数?如果没有,我如何将文件夹中的 JPEG 读入脚本?

谢谢。

4

4 回答 4

24

我更喜欢使用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();
于 2012-06-03T12:06:42.557 回答
22

你没有告诉你是否使用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
于 2012-06-03T12:20:27.843 回答
0

您将需要为此使用 php gd 库...大多数服务器默认安装了它。如果您搜索“resize image php gd”,会有很多示例。

例如看看这个页面http://911-need-code-help.blogspot.nl/2008/10/resize-images-using-phpgd-library.html

于 2012-06-03T12:02:36.817 回答
0

vlzvl 提供的解决方案效果很好。但是,使用此解决方案,您还可以通过更改代码的顺序来覆盖图像。

    $image = imagecreatefromjpeg("image.jpg");  
    unlink("image.jpg");
   imagejpeg($image,"image.jpg",50);

这允许您压缩预先存在的图像并将其以相同的文件名存储在相同的位置。

于 2015-03-05T04:32:01.690 回答