【发布时间】:2021-10-04 00:40:15
【问题描述】:
我有一张图像 (JPEG),我想无缝地叠加到另一张图像上。如果我尝试在 Photoshop 中执行此操作,我会羽化边缘。但我无法弄清楚如何使用 PerlMagick api 来实现这一点。我曾尝试使用 Vignette 创建模糊边框,但效果并不理想。
use Image::Magick;
$file = 'background.jpg';
$image = Image::Magick->new;
open(IMAGE, $file ) or die "Error cannot open file: $file";
$image->Read(file=>\*IMAGE);
close(IMAGE);
$file = 'face.jpg';
$face = Image::Magick->new;
open(IMAGE, $file ) or die "Error cannot open file: $file";
$face->Read(file=>\*IMAGE);
close(IMAGE);
$face->Vignette (geometry=>'5x5', radius=>50, x=>5, y=>5, background=>none);
$image->Composite(image=>$face,compose=>'hardlight',geometry=>'+480+800');
print "Content-type: image/jpeg\n\n";
binmode STDOUT;
$image->Write('jpg:-');
【问题讨论】:
-
“我会羽化边缘..” 你的意思是像this 那样褪色吗?
-
不,我希望较小图像的边缘与背景图像混合,所以没有直边,而是一个图像淡入另一张图像。我认为晕影效果与强光相结合可能会实现这一点,但我仍然在较小的图像周围获得硬边。感谢您的观看。
-
好的,你能把示例图片上传到某个地方吗?此外,如果有一张显示预期结果的图片会很好。
-
很抱歉浪费了您的时间。我发现了这个问题。在 Vingnette 命令中,我有“radius=>50, x=>5, y=>5”,它在图像边缘周围创建了一条硬线。我不明白这些元素的作用。当我删除它们时,我得到了我想要/预期的效果。
标签: perl imagemagick jpeg perlmagick