我构建了一个使用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。
答案 0 :(得分:2)
我还没有真正使用过这个模块,但我有几个想法:)
您将$ full_image的不透明度设置为99%。您是否希望以较小的值使图像透明?
根据this页面,您可以调用名为opaque的方法:
不透明:color =>颜色名称,填充=>颜色名称,频道=> {全部,默认, 阿尔法,黑色,蓝色,CMYK,青色,灰色,绿色,索引,洋红色,不透明度, 红色,RGB,黄色},invert => {True,False}
我会首先阅读图像,然后使颜色透明(以防万一):
$icon->ReadImage($imagepath);
$icon->Transparent(color=>'#010101');
( Ugly hack )在图片上运行convert作为系统命令,然后加载它:
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',
);
答案 1 :(得分:0)
您需要告诉ImageMagick使用Alpha通道。
在命令行上,这将是-alpha On
。