Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing Imagemagick:在背景上扭曲图像?_Image Processing_Imagemagick_Distortion - Fatal编程技术网

Image processing Imagemagick:在背景上扭曲图像?

Image processing Imagemagick:在背景上扭曲图像?,image-processing,imagemagick,distortion,Image Processing,Imagemagick,Distortion,我有一个背景图像: 和两个透明的PNG图像:和 现在,我想在背景上绘制两幅带有透视失真的图像,如下所示: convert -size 800x600 xc:black \( -size 300x200 xc:red \) -geometry +90+10 -composite result.png 两幅图像的目标坐标按顺时针顺序(从左上角开始)为: 梯度:62129421218383458147548 树:445100765,47698368529396 我不知道如何从一张图像(在本例中

我有一个背景图像:
和两个透明的PNG图像:和

现在,我想在背景上绘制两幅带有透视失真的图像,如下所示:

convert -size 800x600 xc:black \( -size 300x200 xc:red \) -geometry +90+10 -composite result.png
两幅图像的目标坐标按顺时针顺序(从左上角开始)为:

梯度:
62129
421218
383458
147548

树:
445100
765,47
698368
529396

我不知道如何从一张图像(在本例中为天空背景)开始,然后拍摄另一张图像,并使用透视失真将其绘制到背景中的特定目标坐标。在一个convert命令内,同时对多个图像执行此操作,这让我很烦恼

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

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,0
255255
0255
作为角坐标,还是
256,0
256256
0256


任何能够阐明这些问题的IM专家?

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

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

-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-虚拟像素透明+扭曲透视“0,0 62129 255,0 421218 255255 383458 0255 147548”\)-几何体+62+129-合成结果.png
在本例中,您可以立即看到62129是我需要在几何体中指定的。但是我需要在四个扭曲坐标都是变量的情况下应用它,比如
$x1,$y1
直到
$x4,$y4
。所以我事先不知道具体的数字,所以我不知道哪个是最上面/最左边的坐标。我脑子里不清楚,但我会想一想。我想埃里克会在我之前告诉你-他喜欢歪曲事实;-)@emcconville问题是,在我这样做的现实生活中,坐标是未知的。这意味着我必须添加一个shell脚本,计算四个目标坐标的最小x和y,并为此添加一个几何参数?这是可能的,但我有一种感觉,我把事情复杂化了…?我不确定我是否理解。。。为什么不
convert sky.jpg\(gradient.png-alpha set-虚拟像素透明+扭曲透视“0,0 62129 255,0 421218 255255 383458 0255 147548”\)-几何体+62+129-合成结果.png
在本例中,您可以立即看到62129是我需要在几何体中指定的。但是我需要在四个扭曲坐标都是变量的情况下应用它,比如
$x1,$y1
直到
$x4,$y4
。所以我事先不知道具体的数字,所以我不知道哪个是最上面/最左边的坐标。我脑子里不清楚,但我会想一想。我想埃里克会在我之前告诉你-他喜欢歪曲事实;-)@埃姆康维尔