2014-12-03 19 views
0

我遇到了一个graphicsmagick,看起来像一个bug,但却非常奇怪。GraphicsMagick在使用NorthWest重力时失败

当我执行下面的命令,它工作正常:

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 

但是,如果我改变重力向西北时,出现了一个错误:“GM转换:不合格绘图图元定义(文本) [无此文件或目录]。'

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 

因此,看起来西北重力值与特定翻译值相比会导致错误。

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

+1

你没有提到你的GraphicsMagick工具的版本,但我已经验证该行为是由当前的开发版本,GraphicsMagick工具 - 1.4展出。 – 2014-12-04 23:26:44

回答

0

我终于弄清楚了这个问题的解决方案。

这显然是一个图形Magick错误,因为它只发生在部分文本位于图像内部,但其一部分位于X和Y坐标外部的情况下。例如,如果文本完全在图像之外,则效果很好。但是如果我在西北地区定位了一个文本,并使用-5 -5定位,那么它会因错误而失败。

我使用的解决方案是创建一个巨大的“画布”,大约是行李的两倍。首先,我将图像放在画布中央,然后将文字放在图像上。因为现在我们有一个巨大的画布,文字不会部分落在图像之外(因为通用的图像目前是画布),通用汽车可以处理它们。在定位所有文本后,我裁剪出图像的中间部分,这是我真正需要的部分。

一个例子命令我使用看起来像这样:

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 
+1

此问题已在GraphicsMagick快照1.4.020141214中解决。 – 2014-12-15 13:08:13

0

您正在尝试在图像边界之外部分地写入文本。 “翻译-5,-5”的“SouthEast”也失败。唯一的错误似乎是错误信息有些难以理解。

编辑:在GraphicsMagick快照1.4.020141214中修复了这个错误(在这些情况下没有发出错误消息)。

+0

文字可以写在图像的外部。只有当我试图以一部分可见的方式编写它时,问题才会出现,但其他部分在外面。 – Relevart 2014-12-08 09:07:18