我遇到了一些看起来很像bug的图片怪,但却是一个非常奇怪的错误。
当我执行以下命令时,它可以正常工作:
gm convert /etc/files/background/1.jpg -draw "gravity 'West';fill '#FFFFFF';font 'Courier';font-size 24;rotate 180;translate 5,5 text 0, 0 'preview_title'" /vagrant/output.jpg
但如果我将Gravity更改为NorthWest,则会失败并显示错误:&#39; gm convert:不符合图形的原始定义(文本)[没有此类文件或目录]。&#39; < / em>的
gm convert /etc/files/background/1.jpg -draw "gravity 'NorthWest';fill '#FFFFFF';font 'Courier';font-size 24;rotate 180;translate 5,5 text 0, 0 'preview_title'" /vagrant/output.jpg
然而,不仅重力值与此错误有关,因为如果我将transle设置更改为-5,-5从5,5再次正常工作:
gm convert /etc/files/background/1.jpg -draw "gravity 'NorthWest';fill '#FFFFFF';font 'Courier';font-size 24;rotate 180;translate -5,-5 text 0, 0 'preview_title'" /vagrant/output.jpg
因此,与特定的翻译值相比,NorthWest重力值似乎会导致错误。
有没有人遇到此错误?这是一个错误还是有人知道它的原因是什么?
答案 0 :(得分:0)
您正尝试将文字部分写在图像边界之外。 “SouthEast”与“translate -5,-5”也失败了。唯一的错误似乎是错误信息有点难以理解。
编辑:该错误已在GraphicsMagick快照1.4.020141214中修复(在这些情况下不会发出错误消息)。
答案 1 :(得分:0)
我设法最终找到了解决这个问题的方法。
这显然是一个Graphics Magick错误,因为它只会在文本的一部分位于图像内部但其中一部分位于X和Y坐标之外时才会发生。因此,例如,如果文本完全在图像之外,则效果很好。但是如果我有一个文本位于西北,并使用-5 -5定位,那么它会因错误而失败。
我使用的解决方案是创建一个巨大的“画布”,大约比行李大2倍。首先,我将图像放在画布的中心,然后将文本放在图像上。因为现在我们有一个巨大的画布,文本不会部分落在图像之外(因为GM的图像目前是画布)而GM可以处理它们。在我定位所有文本后,我裁剪图像的中间部分,这是我真正需要的部分。
我使用的示例命令如下所示:
gm convert -background white -extent 5000x5000-1000-1000 /etc/files/background/1.jpg -draw "gravity 'NorthWest';fill '#000000';font 'Courier';font-size 22;rotate 0;translate 970,1005 text 0, 0 'prlasdfsdfv'" -crop 1427x1992+1000+1000 /vagrant/output.jpg