如何使用ImageMagick将图像内容偏移X,Y像素?

时间:2016-11-17 15:44:08

标签: linux image-processing imagemagick imagemagick-convert

我需要将PNG图像中的像素偏移为X中的-1和Y轴上的-4。

图像是从Corel Draw创建的PDF转换而来的,它增加了一个偏移,打破了我正在处理的图像处理系统。 hugin-tools软件包中的align_image_stack在处理这些文件时崩溃,这就是为什么我会尝试修复固定的错误。

我试过这些命令:

$ convert a.png: -geometry 100%-100-100 b.png

$ convert -region '100%+500px+100px' a.png b.png

$ convert -page '100%+500px+100px' a.png b.png

$ convert -repage '100%+500px+100px' a.png b.png

$ convert -crop '100%+500px+100px' a.png b.png

$ convert a.png -geometry 100%-100px-100px b.png

他们都完成了没有错误,但给了我相同的图像,我把它们作为输入。

a.png = b.png

我做错了什么?为什么Covert命令不会移动图像内容?

编辑:

这是一对图像来说明我的问题。第一个图像是我想要的,第二个图像来自Corel Draw,我想应用任意的X / Y偏移来补偿这种差异。图像是伪造的,只是为了说明问题,这不是真实的数据。

Two images

新观点是我能够产生偏移一次,但我无法重现这一点。它看起来像是ImageMagick中的一个错误,因为我正在尝试我之前使用的相同命令,现在它不起作用。

我也尝试过使用GraphicsMagick进行双重检查。

我能够获得写入PNG标头的偏移量,但这并不会使Blender使用该偏移量,因此我需要将该偏移量“烧”到位图数据中,而不仅仅是在元数据中指定它。

这个命令做了一个改变,但只有GIMP似乎理解这一点,我需要让Blender应用偏移量:

convert a.png -repage '100%x100%+100+1000' b.png

我尝试使用-sample来应用转换,但它没有被提供并保留在元数据中 - 我可以使用GIMP进行检查。

convert a.png -repage '100%x100%+100+1000' -sample 100% b.png

我无法相信我无法做这么简单的事情。

1 个答案:

答案 0 :(得分:1)

更新了答案

如果没有合适的图像,很难理解你想要的东西,但这是另一种为你猜测解决方案的尝试。让我们从这个图像开始 - 忽略颜色,因为我只添加它们,这样你就可以看到图像的范围,你可以删除/更改它们:

enter image description here

新计划是修剪你的图像,使字母周围没有边框,然后添加你想要的任何边框。因此,修剪现有边框并左右添加10px边框,并在顶部和底部添加50px边框:

convert start.png -trim -bordercolor red -border 10x50 result.png

enter image description here

或者,修剪原始边框并仅在右侧添加10px边框:

convert start.png -trim -gravity east -background blue -splice 10x0 result.png

enter image description here

希望这能为您提供实现目标的方法。

原始答案

如果要将页面偏移重置为零,最简单的方法是:

mogrify +repage image.png

或者,稍微努力一点:

convert image.png +repage result.png