我在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一起使用。
提前致谢!
答案 0 :(得分:1)
我不确定您是否可以将两个连接在一起的PNG文件作为PNG串联到ImageMagick的输入流中。基本上,你正在尝试这样做:
{ convert xc:red png:- ; convert xc:blue png:- ; } | convert png:- png:- -append result.png
这不起作用,因为,我认为,最终convert
会在遇到第一个png:-
时读取整个输入流,并且第二个png:-
将没有任何内容}。
我认为通过单个频道发送多个连接图像的唯一安全方法是使用支持多个图像的MIFF
“魔术图像文件格式”:
{ convert xc:red miff:- ; convert xc:blue miff:- ; } | convert miff:- -append result.png