【问题标题】:Cropping images with ImageMagic produces wrong size images - why?使用 ImageMagic 裁剪图像会产生错误尺寸的图像 - 为什么?
【发布时间】:2016-08-30 02:03:09
【问题描述】:

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

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

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

我做错了什么?

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

【问题讨论】:

    标签: imagemagick image-manipulation


    【解决方案1】:

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

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

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

    现在让我们在右下角裁剪出一块,我特意把它做成洋红色,这样你就可以看到我得到了哪一块:

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

    但是如果我们现在用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
    

    【讨论】:

    • 那么现在,中间图像已经记住了它们的裁剪,我该如何清除它们?我不再拥有原件。
    • 没关系,for i in *.png; do convert "$i" +repage "~/Pictures/cleared/$i"; done 命令成功了。
    • 谢谢!!!!这是我发现谈论如何转换 png 以忘记其原始位置的唯一答案。现在,我想知道如何从 psd 文件中选择图层以忘记其原始位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 2021-07-25
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多