2016-11-17 75 views
0

我需要在一个PNG图像中将X中的-1和Y中的-4中的像素偏移。如何使用ImageMagick将图像内容偏移X,Y像素?

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

我尝试这样的命令:

$ 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似乎明白这一点,我需要让搅拌机将偏移:

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

我试着用 - 抽样申请改造,但它没有alpplied,并保持在元数据 - 我可以用GIMP检查这个。

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

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

+0

如何共享有偏移的图像? –

+0

我无法发布确切的图像,因为它们属于客户端。 但我可以用不同的文件来说明问题。 – unfa

+0

无法诊断您的插图中的问题,它只是两个图像的屏幕截图。获取'pngcheck'并查看'pngcheck -v a.png'和'pngcheck -v b.png'的结果。如果PNG包含一个偏移量,它将在'oFFs'块中。 –

回答

1

更新回答

这是很难理解你想要什么没有适当的图像,但在这里是在猜测你的解决方案的另一种尝试。让我们先从这个图像 - 忽略了颜色,我只加了他们,所以你可以看到图像的程度,你可以删除/无论如何改变他们:

enter image description here

的新计划是修剪你的图像,信件周围没有边框,然后在随后添加任何你想要的边框。因此,修整现有的边界并添加10px的边框左侧和右侧,一个50像素的边框顶部和底部:

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

​​

或者,修剪原来的边框并添加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 
+0

这并不能解决我的问题,因为文件元数据中没有指定可以重置的偏移量。我需要应用自定义偏移量。 不幸的是,我使用的任何几何相关命令都没有对图像进行任何更改,它们似乎被默默忽略, 我模糊了图像,改变了伽玛,翻转了它,但没有偏移像素图片。 – unfa

+0

@unfa我又有一次尝试 - 请再看一遍。 –

+0

看着你的更新答案 - 这是一个有趣的解决方案 - 它实际上可能是我的解决方案! 如果我测量我的“完美”页面的边距,我可以修剪图像并添加边框,使图像适当裁剪。 也许如果“拼接”命令可以接受负值,整个事情可能会更容易,并没有“修剪”阶段的工作。 – unfa