ImageMagick convert 无法转换为 webp

ImageMagick convert 无法转换为 webp

在 Ubuntu 12.04 上,ImageMagick 似乎不支持 webp。

convert flyer.png flyer.webp

创建一个带有 webp 扩展名的 png 文件。

webp 文档据称 ImageMagick 支持 webp

$ convert --version`
Version: ImageMagick 6.6.9-7 2012-08-17 Q16

我已经安装了这两个:

  • libwebp-dev- 数码摄影图像的有损压缩。
  • libwebp2- 数码摄影图像的有损压缩。

此外,convert 无法解码 webp 文件。

出了什么问题?这是 Ubuntu 的一个错误吗?

答案1

已在 16.04 中修复

在 16.04 中convert flyer.png flyer.webp确实有效,尽管webp需要:

sudo apt-get install webp

如果没有webp安装,则会显示以下错误消息:

convert: delegate failed `"cwebp" -quiet -q %Q "%i" -o "%o"' @ error/delegate.c/InvokeDelegate/1310.

答案2

Ubuntu 的 imagemagick 源包未声明对 libwebp-dev 的构建依赖。因此,imagemagick 的构建不支持 webp。这可以视为 Ubuntu 的一个错误。

构建过程的相关输出:

checking for WEBP... 
checking webp/decode.h usability... no
checking webp/decode.h presence... no
checking for webp/decode.h... no
checking for WebPDecodeRGB in -lwebp... no
checking if WEBP package is complete... no

当安装了 libwebp-dev 时:

checking for WEBP... 
checking webp/decode.h usability... yes
checking webp/decode.h presence... yes
checking for webp/decode.h... yes
checking for WebPDecodeRGB in -lwebp... yes
checking if WEBP package is complete... yes

如果您只想自己修复此问题,您可以重建软件包并安装您的版本:

cd /tmp
mkdir imagemagick
cd imagemagick
sudo apt-get build-dep imagemagick
sudo apt-get install libwebp-dev devscripts
apt-get source imagemagick
cd imagemagick-*
debuild -uc -us
sudo dpkg -i ../*magick*.deb

答案3

同时可以安装:

$ sudo apt-get install webp

并使用dwebpcwebp命令从/到 webp 文件格式解压缩/压缩。

答案4

在 6.8.3 之前,WebP 支持还存在一些透明度问题,因此我使用了 15.04 Vivid 中的 6.8.9-9,并将其移植到具有 webp 支持的 14.04 Trusty。使用时请自担风险:

sudo add-apt-repository ppa:jamedjo/ppa
sudo apt-get update
sudo apt-get install imagemagick libmagickcore-6.q16-2

如果你想重复此操作,步骤如下:

  • 用于 backportpackage imagemagick --source vivid --destination trusty --workdir=imagemagick-backport获取vivid的版本并tar -xf提取.deb
  • 然后在debian/control替换dpkg-dev (>= 1.17.6)依赖项中,添加依赖项libwebp-dev并替换Architecture: anyamd64避免构建失败。
  • 添加,--with-webp添加debian/rules一个变更日志条目dch并使用来debuild -S -sd构建仅有源的包。
  • 最后,在启动板上创建一个帐户并按照他们的指示分享您的修复。

相关内容