我正在使用imagemagick和其他工具创建包含文本和图表的多个图像。
在某些时候我意识到,即使批量使用相同的指令而几乎没有变化,颜色 - 由十六进制值精确定义 - 从图像变为图像!
这是一个示例(不需要输入文件),可以在我的机器上产生可重现的错误(或至少是意外的)结果(Ubuntu 14.04,ImageMagick 6.7.7-10 2017-07-31)[根据fmw42'的建议]
convert -size 66x46 -bordercolor "#a0a0a0" -border 2 xc:White -gravity Center -fill "#a0a0a0" -weight 700 -pointsize 24 -annotate 0 "0" a_1.png
convert -size 326x46 -bordercolor "#f0f0f0" -border 2 xc:White -gravity West -fill "#000000" -weight 700 -pointsize 14 -annotate +10+0 "4-Fluoroacetophenone" a_2.png
montage -colorspace sRGB a_1.png a_2.png -tile 2x1 -mode Concatenate -set colorspace sRGB a_3.png
convert -size 66x46 -bordercolor "#a0a0a0" -border 2 xc:White -gravity Center -fill "#a0a0a0" -weight 700 -pointsize 24 -annotate 0 "CN" b_1.png
convert -size 326x46 -bordercolor "#f0f0f0" -border 2 xc:White -gravity West -fill "#000000" -weight 700 -pointsize 14 -annotate +10+0 "trans-3-dimethylaminoacrylonitrile" b_2.png
montage -colorspace sRGB b_1.png b_2.png -tile 2x1 -mode Concatenate -set colorspace sRGB b_3.png
(我已经离开了原始文本变量,因为我无法理解是什么触发了颜色的变化,而不同的渲染单词会产生不同的结果)
上面的6个结构创建了这6个图像:
a_1.png a_2.png a_3.png
b_1.png b_2.png b_3.png
看起来像这样:
如您所见,虽然a_1和b_1共享相同的颜色 - 而a_2和b_2也是如此 - a_3和b_3(由a_1 + a_2和b_1 + b_2组成)具有不同的颜色 !添加了明确的颜色空间规范并没有帮助。
(这不是将6张图片放在一个文件中的工件。色差在单独的文件中也很明显)
造成这种情况的原因是什么?如何在imagemagick中获得一致的色彩?由于我使用可视颜色代码来传达信息,我需要可以依赖的调色板。
编辑:与ImageMagick 6.8.9-9 Q16 x86_64 2017-07-31相比,这确实不会发生(即颜色是一致的),遗憾的是我的版本不是在我的生产机器上。
我没有删除问题,因为在ImageMagick 6.7.7中找到解决方案会有所帮助。或者它只是一个(已知的)错误,所以唯一的解决方案是升级?
答案 0 :(得分:1)
你的ImageMagick 6.7.7-10 2017-07-31已经多次修补,最新的补丁是2017-07-31。有报道称补丁存在其他问题。所以我怀疑它有一个糟糕的补丁你应该查询你的Linux发行版。
请注意,光栅图像的正确Imagemagick语法是在任何设置和运算符之前首先读取输入图像(或创建它)。如此正确,你的语法应该是
convert -size 66x46 xc:White -bordercolor "#a0a0a0" -border 2 -gravity Center -fill "#a0a0a0" -weight 700 -pointsize 24 -annotate 0 "0" a_1.png
IM 6是宽容的,所以它可能无关紧要。但IM 7并不宽容。
-set colorspace sRGB在你的命令中可能是不必要的,但不应该受到伤害。但如果使用,应在创建输入图像后正确放置。
答案 1 :(得分:0)
使用Imagemagick 6.9.9.5 Q16 Mac OSX(2017-08-04)和Imagemagick 7.0.6.5 Q16 HDRI,正确的语法应该是:
IM 6
convert -size 66x46 xc:White -bordercolor "#a0a0a0" -border 2 -gravity Center -fill "#a0a0a0" -weight 700 -pointsize 24 -annotate 0 "0" a_1.png
convert -size 326x46 xc:White -bordercolor "#f0f0f0" -border 2 -gravity West -fill "#000000" -weight 700 -pointsize 14 -annotate +10+0 "4-Fluoroacetophenone" a_2.png
montage a_1.png a_2.png -tile 2x1 -mode Concatenate -set colorspace sRGB a_3.png
convert -size 66x46 xc:White -bordercolor "#a0a0a0" -border 2 -gravity Center -fill "#a0a0a0" -weight 700 -pointsize 24 -annotate 0 "CN" b_1.png
convert -size 326x46 xc:White -bordercolor "#f0f0f0" -border 2 -gravity West -fill "#000000" -weight 700 -pointsize 14 -annotate +10+0 "trans-3-dimethylaminoacrylonitrile" b_2.png
montage b_1.png b_2.png -tile 2x1 -mode Concatenate -set colorspace sRGB b_3.png
IM 7
magick -size 66x46 xc:White -bordercolor "#a0a0a0" -border 2 -gravity Center -fill "#a0a0a0" -weight 700 -pointsize 24 -annotate 0 "0" a_1.png
magick -size 326x46 xc:White -bordercolor "#f0f0f0" -border 2 -gravity West -fill "#000000" -weight 700 -pointsize 14 -annotate +10+0 "4-Fluoroacetophenone" a_2.png
magick montage -colorspace sRGB a_1.png a_2.png -tile 2x1 -mode Concatenate -set colorspace sRGB a_3.png
magick -size 66x46 xc:White -bordercolor "#a0a0a0" -border 2 -gravity Center -fill "#a0a0a0" -weight 700 -pointsize 24 -annotate 0 "CN" b_1.png
magick -size 326x46 xc:White -bordercolor "#f0f0f0" -border 2 -gravity West -fill "#000000" -weight 700 -pointsize 14 -annotate +10+0 "trans-3-dimethylaminoacrylonitrile" b_2.png
magick montage -colorspace sRGB b_1.png b_2.png -tile 2x1 -mode Concatenate -set colorspace sRGB b_3.png
对于我得到的两个:
这是对的吗?你用我的命令得到了不同的东西吗?