使用 imagemagick 将垫调整大小的蒙版应用于裁剪调整大小的图像
Posted
技术标签:
【中文标题】使用 imagemagick 将垫调整大小的蒙版应用于裁剪调整大小的图像【英文标题】:Apply pad-resized mask to crop-resized image with imagemagick 【发布时间】:2014-08-08 20:54:19 【问题描述】:我有这个 imagemagick 命令,它对图像应用蒙版:
convert \( subject.jpg -resize "370x210^" -gravity Center -crop "370x210+0+0" \) \( mask.png -resize "370x210" -gravity "Center" \) -composite out.png
图像最终具有所需的尺寸,同时保持纵横比。蒙版最终小于目标尺寸,但居中。这一切都很好,正是我想要的。但是,我希望遮罩外的任何内容都被着色(隐藏遮罩外的图像部分)。
这是当前结果:
这就是我要找的:
(请注意,图像的宽度和高度相同,但底部图像上不再出现“侧边栏”。如果蒙版和图像具有相同的纵横比,这两个图像之间不会有差异.)
我尝试了很多不同的方法(与额外的全尺寸白色图像、边框、框架等合成),但我无法获得所需的输出,也无法在网上找到一个好的示例。有什么建议吗?
【问题讨论】:
为什么不给面具额外的bleed? @emcconville ImageMagick 没有 -bleed 选项。你指的是什么? 出血是一种古老的打印技术,与 IM 无关。在此示例中,您将 -extent 遮罩图像以包含超过所有合成图像的更大区域,并将 -trim 作为最后一步将其向下。 【参考方案1】:使用-draw color 命令将图像蒙版填充到剪切边框。这种技术非常接近印刷品的出血和视频的过度扫描。
示例
给定一个面具......
定义蒙版的边框颜色,即剪裁边界,以及要填充的颜色。
对于这个例子,边框和颜色是黑色的。请注意,我添加了缺少的 -compose 和 -alpha,但这已本地化为我的示例。
convert \
\( source.jpg -resize "370x210^" -gravity Center -crop "370x210+0+0" \) \
\( mask.png -resize "370x210" -gravity "Center" \
-bordercolor black \
-fill black \
-draw "color 10,10 filltoborder" \
\) \
-alpha Off -compose CopyOpacity -composite out.png
source.png
out.png
【讨论】:
以上是关于使用 imagemagick 将垫调整大小的蒙版应用于裁剪调整大小的图像的主要内容,如果未能解决你的问题,请参考以下文章