【问题标题】:How to write lossless WebP files with PerlMagick如何使用 PerlMagick 编写无损 WebP 文件
【发布时间】:2018-04-27 22:38:34
【问题描述】:

我正在尝试使用 Graphics::Magick 在 Perl 中将 PNG 文件转换为无损 WebP。命令行是:

$ gm convert in.png -define webp:lossless=true out.webp

我的 Perl 代码看起来像这样:

use Graphics::Magick;

my $image = Graphics::Magick->new();
$image->Read("in.png");
my $image_data = $image->ImageToBlock(magick => "webp");
print $out_fh $image_data;

这段代码完美地编写了有损 WebP 文件,但是我该如何用 Perl API 来表达“-define”呢?

谢谢,

更新:看来我需要调用 AddDefiniton API 函数 (http://www.graphicsmagick.org/api/image.html#adddefinition)。看起来它现在还没有通过 Perl API 导出。

【问题讨论】:

  • 从未尝试过,但也许$image->Set('webp:lossless'=>'true');
  • @MarkSetchell,不,它没有。 Set(define => 'webp:lossless=true') 也不起作用 :)
  • 当作为 PHP 扩展安装时,我看到有一个方法“setimageoption”,它需要 3 个参数。从 c 文件 i stumbled upon 来看,参数似乎是:格式、键、值。

标签: graphicsmagick webp perlmagick


【解决方案1】:

我知道这对你没有帮助,但是对于那些对如何在 PHP 中执行此操作感兴趣的人,这里是:

$im = new \Gmagick($src);
$im->setimageformat('WEBP');

// Not completely sure if setimageoption() has always been there, so lets check first.
if (method_exists($im, 'setimageoption')) {
    $im->setimageoption('webp', 'lossless', 'true');
}
$imageBlob = $im->getImageBlob();
$success = @file_put_contents($destination, $imageBlob);

更多 webp 选项,请查看this code

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-18
    • 2019-07-24
    • 1970-01-01
    • 2015-07-16
    • 2021-01-04
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多