使用NorthWest引力时,GraphicsMagick失败

时间:2014-12-03 07:55:03

标签: java imagemagick graphicsmagick

我遇到了一些看起来很像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重力值似乎会导致错误。

有没有人遇到此错误?这是一个错误还是有人知道它的原因是什么?

2 个答案:

答案 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