【问题标题】:How to offset image contents by X,Y pixels using ImageMagick?如何使用 ImageMagick 将图像内容偏移 X、Y 像素?
【发布时间】:2017-04-01 05:55:19
【问题描述】:

我需要将 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 偏移来补偿这种差异。图片是伪造的,只是为了说明问题,这不是真实数据。

新的一点是我能够产生偏移一次,但我无法重现这一点。在我看来,它就像 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

我不敢相信我不能做这么简单的事情。

【问题讨论】:

  • 分享一张带偏移量的图片怎么样?
  • 我无法发布确切的图像,因为它们属于客户。但我可以用不同的文件来说明问题。
  • 无法从您的插图中诊断问题,这只是两张图片的屏幕截图。获取pngcheck 并查看pngcheck -v a.pngpngcheck -v b.png 的结果。如果 PNG 包含偏移量,它将位于 oFFs 块中。

标签: linux image-processing imagemagick imagemagick-convert


【解决方案1】:

更新答案

如果没有正确的图像,很难理解您想要什么,但这里是另一种为您猜测解决方案的尝试。让我们从这张图片开始 - 忽略颜色,因为我只添加了它们,这样您就可以看到图片的范围,并且无论如何您都可以删除/更改它们:

新计划是修剪您的图像,使字母周围完全没有边框,然后添加您想要的任何边框。所以,修剪现有的边框,并添加一个 10px 的左右边框和一个 50px 的上下边框:

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

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

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

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

原答案

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

mogrify +repage image.png

或者,稍微难一点:

convert image.png +repage result.png

【讨论】:

  • 这并不能解决我的问题,因为文件元数据中没有指定可以重置的偏移量。我需要应用自定义偏移量。不幸的是,我使用的几何相关命令都没有对图像进行任何更改,它们似乎被默默地忽略了,我可以模糊图像,更改伽玛,将其倒置,但不会偏移图像中的像素。
  • @unfa 我又尝试了一次 - 请再看一遍。
  • 查看您的更新答案 - 这是一个有趣的解决方案 - 它实际上可能是我的解决方案!如果我测量“完美”页面上的边距,我可以修剪图像并添加边框,从而正确裁剪图像。也许如果“splice”命令可以接受负值,那么整个事情会更容易,并且可以在没有“trim”阶段的情况下工作。
  • mogrify +repage image.png 这正是我所需要的!谢谢马克!我试图转换一些最初从发送到专业打印机的 PDF 文件导出的 tiff 文件,这些文件具有“页面几何:984x1432+47+23 原始几何:+47+23”属性,导致页面在图像输出中发生偏移。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 2022-01-07
  • 1970-01-01
  • 2011-08-24
相关资源
最近更新 更多