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

时间:2016-08-30 02:03:09

标签: imagemagick image-manipulation

有一堆图像代表页面,从书本扫描并已经使用ImageMagic进行裁剪。它们都是均匀的,629x625像素。我需要进一步处理它们以准备创建PDF:将它们分成奇数页和偶数页。它们的名称为canvas-00.pngcanvas-53.png

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

convert canvas-??.png -crop 314x625+0+0 ~/Pictures/odd/canvas.png

我做错了什么?

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

1 个答案:

答案 0 :(得分:4)

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

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

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

enter image description here

现在让我们在右下角裁剪一块,我故意制作洋红色,这样你就可以看到我得到的那件:

convert start.png -crop 200x100+250+150 z.png

enter image description here

但是,如果我们现在用identify查看它,你可以看到它“记住”它在原始图片中的位置:

identify z.png

<强>输出

z.png PNG 200x100 500x300+250+150 16-bit sRGB 51.1KB 0.000u 0:00.000

这将可能影响(即搞乱)您将来使用图像做的任何事情。解决方案是使用+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

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

convert canvas-??.png +repage -crop 817x1040+0+0 ~/Pictures/odd/canvas.png