ImageMagick -fuzz OR 重心裁剪与适合可缩放纵横比框的东西
Posted
技术标签:
【中文标题】ImageMagick -fuzz OR 重心裁剪与适合可缩放纵横比框的东西【英文标题】:ImageMagick -fuzz OR gravity center cropping with things that fit in a scalable aspect ratio box 【发布时间】:2020-10-17 18:28:47 【问题描述】:首先,此任务的目标是通过去除边缘周围的多余部分,使图像在视觉上尽可能大。
我尝试过 fuzz 和 -gravity center ,尽管我认为我更喜欢重力,但它们都做得很好。
不过有一个小问题,那就是裁剪会导致图像没有保持纵横比,因此在视觉上与它们要显示的位置不一致。
我将使用图片进行演示:
我开始使用这个输入图像(800x800),注意边缘:
当我应用命令magick "$file" -gravity center -trim "$out"
我得到以下输出 (696x656),您可以在其中看到顶部和底部边缘的空白。这在这里还可以,但是,该图像位于另一个图像旁边,并且高度差异令人讨厌。这可能没问题,但这里有更糟糕的例子。
取而代之,应该保持纵横比,在这种情况下,之前的图像应该保留边缘白色的部分 .
解决这个问题的一个相当复杂的尝试是将高度重新计算为 696,这确实可以得到额外的像素但它们是白色像素而不是底层图像像素:
magick "$file" -gravity center -trim -extent "696x696" "$out"
这个白色边缘现在实际上是图像的一部分,而第一个边缘不是保持纵横比而是以一种相当笨重的方式。
所以唯一的问题是如何告诉重心保留那些部分。
不过,理想情况下,任何重力操作都应该在考虑到纵横比的情况下执行,并且重力操作应该找到用于裁剪的最佳缩放纵横比正方形。
另一方面,信息返回值 widthxheight+something+something 是什么?是什么东西?
【问题讨论】:
需要加上-fuzz XX%。对于 JPG,由于压缩伪影,它需要大约 15%。如果是其他扫描点,则可能必须更大或进行其他处理以去除小的无关点。 @fmw42 你确定你理解这个问题吗?问题是保持规模。 不,我直到现在才明白这一点,打算删除我的帖子。我看不到 -trim 如何在顶部和底部添加白色填充。 .....一种想法是修剪并调整到原始纵横比。但这可能会裁剪您的一些图像。或修剪和裁剪或修剪和延伸到所需的纵横比。您可能需要查看 -resize W:H 或 -crop W:H 或 -extent W:H,例如 3:2。其中 W:H 是宽高比 @fmw42 老兄!您让我尝试使用 : 而不是 x ... 的范围,它似乎符合所需的比例!它甚至会减产! 【参考方案1】:所以我想我明白了:
magick "$file" -gravity center -trim -extent "800x800" "$out"
给我
和
magick "$file" -gravity center -trim -extent "800:800" "$out"
会给我:
所以x要换成a:
注意:
magick "$file" -gravity center -trim -extent "696x696" "$out"
会给
因此,ImageMagick 并没有放回高度,而是更进一步,尝试从实际上理想的宽度中裁剪更多,尽管图片中的 蜗牛尾巴 似乎被剪掉了一点两个。
我猜应该有一个选项来说明在扩展高度和进食宽度之间行走的激进程度。
但我很满意。谢谢@fm42!
编辑
这并不总是理想的,它适用于宽度而不是填充空白:
这个:
现在导致:
【讨论】:
您可以指定 -gravity 以在中心或西部或东部进行裁剪,或者您想要的任何方式。 按宽高比填充而不是裁剪的模式对您有用吗? 范围垫尚不存在。我在问这是否有用。它将为 -extent 指定一个纵横比,而不是裁剪到纵横比,它会填充到纵横比。 -extent 将正常填充,但不会填充到指定的纵横比。这就是我要问的是否有用。 请不要将代码发布为图像。很难阅读。以上是关于ImageMagick -fuzz OR 重心裁剪与适合可缩放纵横比框的东西的主要内容,如果未能解决你的问题,请参考以下文章