【问题标题】:Make background transparent with Image::Magick and Perl使用 Image::Magick 和 Perl 使背景透明
【发布时间】:2012-08-30 19:22:39
【问题描述】:

我构建了一个使用 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。

【问题讨论】:

  • 我认为您可能必须在从文件加载图像之后设置透明色。顺便说一句,$imagepath 不应该用引号引起来。如何将$icon 保存到文件中?
  • 哦...实际上 $imagepath 是'/var/......' :D 我刚刚在这里使用了变量 :) .. 但我忘了删除单引号 :D ...'$imagepath' 不会不行。哦,你可以看到我Composite它到最后一张照片,然后$full_image->Write( $file );它:D
  • 编辑:我尝试在加载 之后更改它:( .. 没有区别

标签: perl imagemagick transparency


【解决方案1】:

我并没有真正使用这个模块,但我有几个想法:)

  1. 您将 $full_image 的不透明度设置为 99%。您不希望以较小的值使图像透明吗?

  2. 根据this页面,可以调用一个叫opaque的方法:

    不透明:颜色=>颜色名称,填充=>颜色名称,通道=>{全部,默认, Alpha,黑色,蓝色,CMYK,青色,灰色,绿色,索引,品红色,不透明度, 红、RGB、黄}、反转=>{真、假}

  3. 我会先读取图像,然后将颜色设置为透明(以防万一):

    $icon->ReadImage($imagepath);   
    $icon->Transparent(color=>'#010101');
    
  4. (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',
    );
    

【讨论】:

  • to 1. :我试图设置它,但这不是我想要的,它只是完整图像的不透明度本身。 :S ...当它达到100%时,它没有显示,与1%或0%相同。到 2. :同样的事情。我在图片上尝试了不透明的方法。在阅读原始图片之后和之前。与3没有区别。:我在我的问题下方发表评论后尝试了这个。没有区别 :(... 不过还是谢谢 :D
  • 编辑后:哦哦不抱歉......那很丑陋;D但它确实有效:D......但perl本身必须有一个选项。
【解决方案2】:

您需要告诉 ImageMagick 使用 Alpha 通道。

在命令行上,这将是 -alpha On。

【讨论】:

  • 抱歉,这不起作用:(。我在图像上设置了 alphachannel,但没有区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 2018-09-22
  • 2014-05-07
  • 2020-11-20
  • 2023-02-16
  • 1970-01-01
相关资源
最近更新 更多