微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 PerlMagick “羽化”图像边缘

如何解决如何使用 PerlMagick “羽化”图像边缘

我有一张图片 (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:-');

解决方法

硬边是由 x=>5,y=>5,参数引起的。删除这些和半径值,图像将根据需要合并。强光与小插图过程相结合,创建了两个图像混合的区域。所以代码应该是:

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',background=>none);

$image->Composite(image=>$face,compose=>'hardlight',geometry=>'+480+800');

print "Content-type: image/jpeg\n\n";
binmode STDOUT;
$image->Write('jpg:-');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。