【问题标题】:Imagemagick: distorting images on top of background?Imagemagick:在背景上扭曲图像?
【发布时间】:2017-03-14 13:12:39
【问题描述】:

我有一张背景图片:sky.jpg
还有两张透明PNG图片:gradient.pngtree.png

现在我想在背景上绘制两个透视失真的图像,像这样:

两幅图像的目标坐标按顺时针顺序排列(从左上角开始):

渐变:62,129421,218383,458147,548
树:445,100765,47698,368529,396

我不知道如何从一张图像(在本例中为天空背景)开始,然后拍摄另一张图像并在背景中将其绘制到特定的目标坐标。同样在一个转换命令中一次处理多个图像,这让我很困扰。

例如,当我只从一张图像(渐变)开始并尝试以下操作时:

convert sky.jpg \( gradient.png -alpha set -virtual-pixel transparent \
 +distort Perspective "0,0 62,129 255,0 421,218 255,255 383,458 0,255 147,548" \) \
 -compose src-over -composite result.jpg

它被正确地扭曲了(所以坐标是相对正确的),但它是在左上角绘制的,而不是在我指定的坐标处。

我也有点不确定我对-compose-composite 的使用是否正确(我从各种IM 手册示例中获取了这一点)。

我不清楚的另一件事:对于 256x256 图像,我应该使用 255,0255,2550,255 作为角坐标,还是使用 256,0256,2560,256 ?

任何 IM 专家可以阐明这些问题吗?

【问题讨论】:

    标签: image-processing imagemagick distortion


    【解决方案1】:

    -composite 之前添加一个-geometry,如下所示:

    convert -size 800x600 xc:black \( -size 300x200 xc:red \) -geometry +90+10 -composite result.png
    

    【讨论】:

    • 嗯,重点是,在我这样做的现实生活中,坐标是未知的。所以这意味着我必须添加一个 shell 脚本来计算四个目标坐标的最小 x 和 y,并为此添加一个几何参数?这是可能的,但我觉得我把事情复杂化了......?
    • 我不确定我是否理解...为什么不convert sky.jpg \( gradient.png -alpha set -virtual-pixel transparent +distort Perspective "0,0 62,129 255,0 421,218 255,255 383,458 0,255 147,548" \) -geometry +62+129 -composite result.png
    • 在此示例中,您可以立即看到 62,129 是我需要在几何中指定的值。但是我需要在四个扭曲坐标是变量的情况下应用它,比如$x1,$y1 直到$x4,$y4。所以我事先不知道具体的数字,因此我不知道哪些是最上/最左边的坐标。
    • 好的,我明白了。我不知道在我的头顶,但会想一想。我想 Eric 会在我之前告诉你 - 他喜欢扭曲东西 ;-) @emcconville
    猜你喜欢
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    相关资源
    最近更新 更多