【问题标题】:Compress PNG files in PHP在 PHP 中压缩 PNG 文件
【发布时间】:2012-04-14 10:12:06
【问题描述】:

我正在生成带有 PHP 的 cairo 扩展名的 PNG 文件。图像包含背景和文本。现在我想在 cairo 生成这些图像后用 PHP 压缩这些图像。有没有图书馆可以做到这一点?

我找到了 pngcrush 工具。但它是一个命令行工具。我不想调用system 电话。如果没有 PHP 解决方案,则可以使用 C 解决方案。在这种情况下,我将制作一个 PHP 扩展。

我已阅读this related 问题。但是里面没有答案。

【问题讨论】:

    标签: php c compression png cairo


    【解决方案1】:

    你可以使用imagepng() ...

    //If you don't already have a handle to the image and it's just on the file system...
    $im = imagecreatefrompng("yourGenerateFile.png");
    $quality = 5; //0 - 9 (0= no compression, 9 = high compression)
    imagepng($im, 'file/to/save.png', $quality);  //leave out filename if you want it to output to the buffer
    imagedestroy($im);
    

    【讨论】:

    • 我已经有一个cairo句柄但没有gd句柄。我会试试你的代码并告诉你。
    • 质量没有保留。透明度完全丧失!
    • 为了透明度使用:imageAlphaBlending($im, true); imageSaveAlpha($im, true); 就像这里说的:php.net/manual/en/function.imagecreatefrompng.php#43024
    【解决方案2】:

    我会看看PngOptimizer。您可以在页面底部获取它的源代码,它也有单独的 CLI 版本。

    唯一的问题是源是 C++,而不是 ANSI C。我从来没有做过 PHP 扩展,所以我不知道它是否会有所作为。

    【讨论】:

      【解决方案3】:

      对于 C 代码,请查看 ImageMagick。看起来也有一个PHP 扩展。

      【讨论】:

      • 啊哈!它看起来像 PHP 问题而不是 ImageMagick 问题。您可以将标志添加到 PHP-ImageMagick 扩展或创建自己的。 MagickCore 有一个如何在代码中将 gif 转换为 png 的示例(搜索“示例”)。
      • 如果您看到相关问题,OP 用 PHP 尝试过,但我也在命令行中尝试过。在这两种情况下,我的压缩率都不超过 10%。
      猜你喜欢
      • 2017-01-28
      • 2011-11-19
      • 1970-01-01
      • 2013-03-24
      • 2018-02-12
      • 1970-01-01
      • 2017-02-22
      • 2012-01-17
      • 1970-01-01
      相关资源
      最近更新 更多