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

标签 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 header 的偏移量,但这并不能使 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

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

最佳答案

更新的答案

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

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

关于linux - 如何使用 ImageMagick 将图像内容偏移 X、Y 像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40659159/

相关文章:

iOS - 以编程方式从位图中提取剪影

Linux : Start a a service after a particular service has started on boot

linux - 使用主机系统的代理构建 Docker

python - 使用 python-openCv 进行简单模板匹配

c++ - 使用SSE最快缩小8位灰度图像

bash - 如何将 ImageMagick 输出存储到 Bash 变量中(然后使用它)?

java - im4java,mac 运行问题

c - GCC 编译器拒绝查看 Main 方法(C 编程)

ruby-on-rails - 如何为Linux文件设置正确的权限?

php - 从数据库加载图像,跨服务器结果不一致