使用 ImageMagic 裁剪图像会产生错误尺寸的图像 - 为什么?

aje*_*jeh 2 image-manipulation imagemagick

有一堆代表页面的图像,是从书中扫描出来的,并且已经用 ImageMagic 进行了裁剪。它们都是统一的 629x625 像素。我需要进一步处理它们以准备创建 PDF:将它们分成奇数页和偶数页。他们的名字是canvas-00.png通过canvas-53.png

当我使用以下命令首先获取奇数页时,我得到了从错误的水平偏移中提取的完全被屠宰的 275x563 像素图像:

convert canvas-??.png -crop 314x625+0+0 ~/Pictures/odd/canvas.png
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

PS:最初图像较大,包含额外的边距,扫描仪的盖子可见,我使用非常相似的命令成功地将它们裁剪为 629x625,但当然具有非零偏移量+140+71。因此,让我感到困惑的是,一个明显更琐碎的零偏移命令根本不起作用。

Mar*_*ell 6

我怀疑您的 PNG 文件中“记住”了页面偏移量,您需要清除它们。

作为示例,让我们创建一个 500x300 像素的图像:

convert xc:red xc:lime +append \
   \( xc:blue xc:magenta +append \) -append -resize 500x300\! start.png
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在让我们在右下角剪出一块,我故意将其做成洋红色,这样你就可以看到我得到的是哪一块:

convert start.png -crop 200x100+250+150 z.png
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但如果我们现在看它,identify你会发现它“记住”了它在原始图片中的位置:

identify z.png
Run Code Online (Sandbox Code Playgroud)

输出

z.png PNG 200x100 500x300+250+150 16-bit sRGB 51.1KB 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)

这可能会影响(即搞乱)您将来对图像所做的任何事情。解决方案是重置+repage所有页面几何形状和布局,使其忘记。您可以在裁剪时执行此操作,也可以在稍后使用裁剪后的图像时执行此操作 - 取决于您是否要保留裁剪信息。(有时,当您进行拼图游戏处理时,您确实需要它,并且可能想稍后重新组装这些碎片)。

convert start.png -crop 200x100+250+150 +repage z.png
identify z.png
z.png PNG 200x100 200x100+0+0 16-bit sRGB 51.1KB 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)

在您的情况下,如果您已经裁剪并保存而没有重新分页,则可以在实际使用之前加载图像并重新分页:

convert canvas-??.png +repage -crop 817x1040+0+0 ~/Pictures/odd/canvas.png
Run Code Online (Sandbox Code Playgroud)