【问题标题】:Compress jpeg on server with PHP使用 PHP 在服务器上压缩 jpeg
【发布时间】:2012-06-07 20:47:46
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • “压缩”到底是什么意思?如果您的意思是打开并重新保存每个质量较低的文件,请非常小心使用哪个工具。 PHP 的内置 GD 库的质量与文件大小的比率并不是很好。您能否添加更多有关您正在尝试做的事情的背景信息?

标签: php compression jpeg


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你没有告诉你是否使用 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
      

      【讨论】:

      • 是imagecreatefromjpeg里面的参数,意思是我也可以放一个文件的路径?
      • 是的,您可以同时提供 imagecreatefromjpeg 和 imagejpeg 的路径并取消链接。
      • 这不是真正的图像压缩!反而降低了质量。
      【解决方案4】:

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

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

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

      【讨论】:

      • imagejpeg()在使用相同文件名时默认不会覆盖原图吗?
      猜你喜欢
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多