使用Image :: Magick和Perl使背景透明

我构建了一个使用
Image::Magick绘制横幅的Perl脚本.

# ... some code
my $icon = Image::Magick->new();
$icon->Set(size => '16x16');
$icon->Transparent(color=>'#010101');
$icon->ReadImage($imagepath);
$full_image->Composite( # small icon 
    image=>$icon,
    compose=>'Over',
    opacity=>'99%',
    x=>'12',
    y=>'62',
);
# ... some code

通常情况下,图标背景(#010101)应该是透明的,但是失败了……
知道为什么这不起作用?或者也许我可以用而不是透明方法?

编辑:两个图像都是PNG文件. Image :: Magick版本是6.7.

最佳答案 我还没有真正使用过这个模块,但我有几个想法:)

>您将$full_image的不透明度设置为99%.您不希望以较小的值使图像透明吗?
>根据this页面,您可以调用一个名为opaque的方法:

Opaque : color=>color name, fill=>color name, channel=>{All, Default,
Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Opacity,
Red, RGB, Yellow}, invert=>{True, False}

>我会首先阅读图像,然后使颜色透明(以防万一):

$icon->ReadImage($imagepath);   
$icon->Transparent(color=>'#010101');

>(丑陋的黑客)在图像上运行转换为系统命令,然后加载它:

my $icon = Image::Magick->new();
$icon->Set(size => '16x16');
system("convert -transparent '#010101' not_transp.png transp.png");
$icon->ReadImage('transp.png');
$full_image->Composite( # small icon 
    image=>$icon,
    compose=>'Over',
    opacity=>'99%',
    x=>'12',
    y=>'62',
);
点赞