【问题标题】:php imagick JPEG2000 compression increases in filesizephp imagick JPEG2000 压缩文件大小增加
【发布时间】:2020-06-25 15:26:31
【问题描述】:

我正在使用 imagick php 扩展从 .jpg 创建 .webp.jp2 文件并在此过程中压缩图像。我在 .webp 图像上得到了很好的结果,但在 .jp2 上遇到了一些问题。

这是我创建 webp 的代码:

<?php
$img = new Imagick("test.jpg");
$img->setImageFormat("webp");
$img->setImageCompression(Imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(50);
$img->writeImage("test.webp");
?>

这很好用,与 jpg 相比,我的 webp 文件大小几乎减少了 90%。但是对 JPEG2000 (jp2) 使用相同的技术,我的文件大小增加了大约 30%。

这是我用于 jp2 的代码:

<?php
$img = new Imagick("test.jpg");
$img->setImageFormat("jp2");
$img->setImageCompression(Imagick::COMPRESSION_JPEG2000);
$img->setImageCompressionQuality(50);
$img->writeImage("test.jp2");
?>

我尝试了许多不同的图像作为源文件(压缩和未压缩),结果都相同。对我做错了什么有任何见解吗?谢谢。

【问题讨论】:

  • 你到底想做什么?为什么要读取 3 行图片而不是 $image = new Imagick('test.jpg');
  • 感谢@MarkSetchell 指出这一点。这是先前尝试的多余剩余物。 :) 将在问题中更改它...基本上,只是尝试从基本 jpg 文件创建压缩的 webp 和 jp2 文件。
  • 也许你可以分享你的输入图像,以防它有一些破坏压缩方案的功能。
  • 质量在 JPEG2000 中的工作方式不同,请参阅 defines 开始 jp2:XXX 此处 imagemagick.org/script/defines.php 在 PHP Imagick 中,您可能需要 $imagick-&gt;setOption('jp2:quality', 40);
  • 是的..就是这样。谢谢!将其添加为 aswer,以便我可以将其作为正确答案进行检查?

标签: php imagemagick imagick


【解决方案1】:

我对 JPEG2000 不够熟悉,无法提供任何有用的解释,希望其他人能更好地解释它,所以请不要急于“接受”这个答案。 p>

但目前,请注意 JPEG2000 中质量的工作方式不同,请参阅从 jp2:XXX here 开始的定义。

在 PHP Imagick 中,您可以通过以下方式实现等效的 defines

$imagick->setOption('jp2:quality', 40);

【讨论】:

    猜你喜欢
    • 2010-12-13
    • 1970-01-01
    • 2011-11-19
    • 2010-12-29
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多