【发布时间】: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->setOption('jp2:quality', 40); -
是的..就是这样。谢谢!将其添加为 aswer,以便我可以将其作为正确答案进行检查?
标签: php imagemagick imagick