php - PHP 中的 Imagemagick 特定 webp 调用

标签 php imagemagick webp

我能够为 imagemagick 安装 webp 支持。但是我缺少一些精确的命令。
基本内容涵盖:

$im = new Imagick();
$im->pingImage($src);
$im->readImage($src);
$im->resizeImage($width,$height,Imagick::FILTER_CATROM , 1,TRUE ); 
$im->setImageFormat( "webp" );   
$im->writeImage($dest); 

但是我错过了许多微调选项,如此处的 imageMagick 命令行文档中所述:
http://www.imagemagick.org/script/webp.php

具体来说:

如何设置压缩质量? (我试过 setImageCompressionQuality 但它不起作用,即输出总是相同的大小)

如何设置“方法”(从 0 到 6)?

谢谢

编辑:我遵循下面@emcconville 的建议(谢谢!),无论是方法还是压缩都不起作用。所以我开始怀疑我对imagemagick的编译。
我尝试使用命令行:
convert photo.jpg -resize 1170x1170\> -quality 50 photo.webp

Wehn 更改 50 质量变量,结果文件始终大小相同。所以我的imagemagick一定有问题......

最佳答案

How do I set the "method" (from 0 to 6)?



试试这个...

$im = new Imagick();
$im->pingImage($src);
$im->readImage($src);
$im->resizeImage($width,$height,Imagick::FILTER_CATROM , 1,TRUE ); 
$im->setImageFormat( "webp" );
$im->setOption('webp:method', '6'); 
$im->writeImage($dest); 

How do I set compression quality? (I tried setImageCompressionQuality and it does not work, ie the output is always the same size)



Imagick::setImageCompressionQuality 似乎对我有用,但请注意,如果值为 100 或更大,则 webp:lossless 将启用(​​请参阅 source )。您可以测试切换无损以查看它如何影响结果。

$img->setImageFormat('webp');
$img->setImageCompressionQuality(50);
$img->setOption('webp:lossless', 'true');

从评论中编辑

尝试使用 cwebp 实用程序直接测试图像到 webp 的转换。
cwebp -q 50 photo.jpg -o photo.webp

这还将向 stdout 写入一些统计信息,这有助于调试正在发生的事情。
Saving file 'photo.webp'
File:      photo.jpg
Dimension: 1170 x 1170
Output:    4562 bytes Y-U-V-All-PSNR 55.70 99.00 99.00   57.47 dB
block count:  intra4: 91
              intra16: 5385  (-> 98.34%)
              skipped block: 5357 (97.83%)
bytes used:  header:             86  (1.9%)
             mode-partition:   2628  (57.6%)
 Residuals bytes  |segment 1|segment 2|segment 3|segment 4|  total
    macroblocks:  |       0%|       0%|       0%|      98%|    5476
      quantizer:  |      45 |      45 |      43 |      33 |
   filter level:  |      14 |      63 |       8 |       5 |

还要记住,对于某些主题,调整压缩质量并不总是保证文件大小减小。但这些都是极端的边缘情况。

关于php - PHP 中的 Imagemagick 特定 webp 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37711492/

相关文章:

php - 使用 PHP 和 CURL 发出 PUT 请求

php - 如何在从 MySQL 检索的表行中添加值?

ImageMagick "color to alpha"(如 GIMP)

php - 在 pgp 脚本中使用 Imagemagick 以正确的格式保存图像

android - 当我们可以从任何 png 转换器获得较小尺寸的 PNG 时,是否值得将 PNG 转换为 WEBP

javascript - 如何在回显 div 的 php echo 上引用 javascript 函数

php - CSS 和图片未在 Codeigniter 中加载

ffmpeg - 如何将 16 位 RGB 帧缓冲区转换为可视格式?

html - Chrome 更喜欢 jpg 而不是 Webp

ffmpeg - 如何使用 libwebp for android 构建 ffmpeg?