在ImageMagick 7.0.7中出现"不当的图像头错误"。

3

我正在Mac OS High Sierra上运行ImageMagick。

以下命令在ImageMagick 6.9.0上正常工作。

convert -define stream:buffer-size=0 png:- png:- -alpha off -compose copy-opacity -composite png:- 
compare -define stream:buffer-size=0 -fuzz 17% -metric AE png:- png:- png:-

我将ImageMagick 6.9.0更新为ImageMagick 7.0.7-28,然后这两个命令都开始出现以下错误信息:

magick -define stream:buffer-size=0 png:- png:- -alpha off -compose copy-opacity -composite png:-
magick: improper image header `/var/folders/tb/11n2czg57ts9dzxypdsmlqk99c46m9/T/magick-26635byT1dtHsAuT3' @ error/png.c/ReadPNGImage/4231.

magick compare -define stream:buffer-size=0 -fuzz 17% -metric AE png:- png:- png:- 
For input string: "compare: improper image header `/var/folders/tb/11n2czg57ts9dzxypdsmlqk99c46m9/T/magick-26363xwcFdjrv3CT0' @ error/png.c/ReadPNGImage/4231."

你能指导我在这些命令中需要改变什么吗?

如果我将png文件存储在临时文件夹中,并通过替换png:-为临时文件路径运行上述命令,则两个命令都可以正常运行。但是我希望这些命令能够使用InputStream工作。

提前感谢!

1个回答

1

我不确定你能够将两个拼接在一起的PNG文件流作为PNG格式输入到ImageMagick的输入流中。本质上,你正在尝试做这件事:

{ convert xc:red png:- ; convert xc:blue png:- ; } | convert png:- png:- -append result.png

这种方法行不通,因为我认为最终的convert将在遇到第一个png:-时读取整个输入流,而对于第二个png:-就没有剩余内容了。

我认为通过使用支持多个图像的MIFF "Magic Image File Format"是通过单个通道发送多个连接图像的唯一安全方法:

{ convert xc:red miff:- ; convert xc:blue miff:- ; } | convert miff:- -append result.png 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接