使用 PHP 在服务器上压缩 jpeg


Compress jpeg on server with PHP

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

PHP 是否有内置函数?如果没有,如何将 JPEG 从文件夹中读取到脚本中?

谢谢。

你不知道你是否在使用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

我更喜欢使用 IMagick 扩展来处理图像。GD 使用太多内存,尤其是对于较大的文件。以下是 Charles Hall 在 PHP 手册中的代码片段:

$img = new Imagick();
$img->readImage($src);
$img->setImageCompression(Imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(90);
$img->stripImage();
$img->writeImage($dest); 
$img->clean();

你需要使用 php gd 库来做到这一点...默认情况下,大多数服务器都安装了它。如果您搜索"调整图像大小php gd",则有很多示例。

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

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

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

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