使用PHP在服务器上压缩jpeg

使用PHP在服务器上压缩jpeg,php,compression,jpeg,Php,Compression,Jpeg,我有一个网站,有大约1500张JPEG图像,我想把它们全部压缩。浏览目录不是问题,但我似乎找不到一个函数来压缩服务器上已有的JPEG(我不想上传新的),并替换旧的 PHP是否有用于此的内置函数?如果没有,如何将文件夹中的JPEG读入脚本 谢谢。您需要使用php gd库来实现此功能。。。默认情况下,大多数服务器都安装了它。如果您搜索“调整图像大小php gd”,有很多例子 例如,看看这个页面我更喜欢使用扩展来处理图像。GD使用太多内存,尤其是对于较大的文件。以下是PHP手册中的代码片段: $img

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

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


谢谢。

您需要使用php gd库来实现此功能。。。默认情况下,大多数服务器都安装了它。如果您搜索“调整图像大小php gd”,有很多例子

例如,看看这个页面

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

$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);

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

您所说的“压缩”到底是什么意思?如果您的意思是以较低的质量打开和重新保存每个文件,请非常小心使用哪个工具。PHP的内置GD库的质量与文件大小的比率并不是很高。您可以添加更多关于您尝试执行的操作的上下文吗?imagecreatefromjpeg中的参数是源吗,这意味着我也可以放置文件的路径?是的,您可以同时提供imagecreatefromjpeg和imagejpeg的路径并取消链接。这不是真正的图像压缩!质量反而降低。默认情况下,使用相同的文件名时,
imagejpeg()
是否会覆盖原始图像?