You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

ImageMagick 7.1.0-45转换AVIF至PNG失败及AVIF支持版本疑问

ImageMagick 7.1.0-45转换AVIF至PNG失败及AVIF支持版本疑问

看起来你在使用ImageMagick 7.1.0-45把AVIF格式转成PNG时碰到了解码错误,还疑惑是不是这个版本之后才完善AVIF支持对吧?咱们来一步步梳理你的问题:

首先,你执行的转换命令是:

convert macadamiaCracker1.{avif,png}

但得到了两个报错:

convert: Decoder plugin generated an error: Unspecified (7.0) macadamiaCracker1.avif' @ error/heic.c/IsHEIFSuccess/135. convert: no images defined macadamiaCracker1.png' @ error/convert.c/ConvertImageCommand/3325.

你已经通过file命令确认了文件确实是标准的AVIF格式:

file macadamiaCracker1.avif

输出结果:

macadamiaCracker1.avif: ISO Media, AVIF Image

再看你的ImageMagick版本信息:

convert --version

输出:

Version: ImageMagick 7.1.0-45 Q16-HDRI x86_64 d80f6a7cd:20220731
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP(4.5)
Delegates (built-in): bzlib cairo djvu fontconfig freetype heic jng jp2 jpeg jxl lcms lqr lzma openexr png raw rsvg tiff webp x xml zlib
Compiler: gcc (11.3)

关于AVIF支持的版本问题

ImageMagick其实从7.0.10-23版本就正式添加了AVIF的支持,因为AVIF是基于HEIF标准的,所以依赖heic delegate来处理。你的7.1.0-45版本已经包含了这个 delegate,理论上是支持AVIF转换的,但你碰到的解码错误大概率是这个版本的HEIC集成存在bug,或者依赖的libheif库版本过旧导致的。

后续的ImageMagick版本(比如7.1.0-50及之后)确实修复了不少AVIF相关的解码兼容性问题,所以你疑惑的“是否7.1.0-45之后才完善AVIF支持”是对的——这个版本之后的更新确实优化了AVIF的处理能力。

可能的解决办法

  • 更新ImageMagick版本:升级到最新的稳定版,或者至少到7.1.0-50之后的版本,应该能解决这个解码错误
  • 验证AVIF文件完整性:可以用heif-convert(需要安装libheif工具包)试试转换,命令如下:
    heif-convert macadamiaCracker1.avif macadamiaCracker1.png
    
    如果这个命令能成功转换,说明是ImageMagick的版本问题,不是文件本身的问题
  • 检查libheif库版本:确保你系统里的libheif库是支持AVIF的较新版本,因为ImageMagick的HEIC delegate完全依赖这个库来处理AVIF文件

备注:内容来源于stack exchange,提问作者Tim

火山引擎 最新活动