Imagemagick 裁剪似乎不尊重重心

Imagemagick crop doesn't seem to be respecting gravity center

提问人:spinhead 提问时间:9/2/2023 最后编辑:spinhead 更新时间:9/2/2023 访问量:44

问:

批量裁剪以前使用 Imagemagick 旋转的 PNG 图像

convert thistle-7gn.png -rotate 75 thistle-7gn-75.png

此命令

magick thistle-7gn-75.png -gravity center -crop 1600x1600+0+0 +repage thistle-7gn-75-cropped.png;

[编辑:上传时图像似乎从PNG转换为JPG] [编辑 2:Imgur 有意将大 PNG 转换为 JPG——链接到原始 PNG]https://spinhead.com/thistle-7gn-75.png https://spinhead.com/thistle-7gn-75-cropped.png

与附加的图像导致偏心裁剪,也附加。

我对命令的理解是使用“magick”而不是“convert”,然后是文件名,使用“-gravity center”将原点设置为中心而不是左上角,将 X x x x 加上 X 方向的偏移量 Y-方向从原始图像的中心, 输出新文件名

在过去的几个月里,我已经多次成功地完成了这个过程,并认为我已经在重力下进行了裁剪,但是尽管使用了看似相同的语法和不同的图像,但它的行为并不像我预期的那样。

Mac Mini Monterey,ImageMagick 7.1.1-15 Q16-HDRI x86_64 21298

ImageMagick PNG 中心 裁剪 重力

评论

1赞 fmw42 9/2/2023
来自相机的输入具有方向标志。您是手动旋转还是使用 -auto-rotate 旋转。此外,在裁剪后,您需要使用 +repage 删除虚拟画布。
0赞 fmw42 9/2/2023
您发布的是输入 JPG,而不是 PNG。因此,您使用 jpg 输入的命令对我来说效果很好。如果您有 PNG 输入版本,请在裁剪后放置 +repage。
0赞 spinhead 9/2/2023
“来自相机的输入具有方向标志”我不知道这意味着什么,也不知道它如何应用于裁剪时的偏移量。我编辑以更正我的命令,其中确实包括 +repage。发布了 PNG,不知道为什么它们现在是 JPG。使用JPG进行测试,它确实可以按预期工作。但是,我必须保留透明度,以便在该过程的后期展平为复合体。
0赞 fmw42 9/2/2023
如果您从 PNG 开始并在裁剪后添加 +repage,它应该可以工作。试一试。方向标志将允许 IM -auto-orient 自动旋转图像。如果图像是矩形而不是正方形,则如果图像没有先正确旋转,则可以关闭中心;否则,行可能会变成列,反之亦然。
0赞 spinhead 9/2/2023
我从PNG开始,然后使用repage,一切都是方形的,它不起作用。你确实看到我发布的图片是方形的,是吗?我使用的命令指的是 PNG 文件?我编辑了我的帖子并包含了我正在使用 +repage 的评论?所以,不,做这些事情并不能使它起作用,因为那已经是我正在做的事情了。

答:

1赞 fmw42 9/2/2023 #1

我的输入 PNG,我能够从 thistle-7gn-75.png 下载,有一个虚拟画布偏移量,我可以从中看到页面几何体:4374x4374-587-587identify -verbose thistle-7gn-75.png

这意味着您需要在读取输入 PNG 后立即使用 +repage 删除虚拟画布偏移量。

因此,以下内容现在在 Imagemagick 中对我来说工作正常。

输入:

enter image description here

magick thistle-7gn-75.png +repage -gravity center -crop 1600x1600+0+0 +repage thistle-7gn-75-cropped.png

结果:

enter image description here

评论

0赞 spinhead 9/2/2023
明。我对检查图像的了解远不如对图像的了解。我破碎的作物中的偏移量正是这个偏移量,所以这就是解决方案。不知道在过程之前重新分页。非常感谢你一直陪伴我度过难关。我非常感谢您的耐心和帮助。
0赞 fmw42 9/3/2023
PNG 支持虚拟画布。当您裁剪并且裁剪后不添加 +repage 时,它会留下虚拟画布。因此,在读取 PNG 时,最好在读取后添加 +repage,以在执行任何后续处理(如 -crop 和 -trim)之前删除任何潜在的虚拟画布。