gpt4 book ai didi

perl - 如何使用 PerlMagick 替换任何不是特定颜色的颜色?

转载 作者:行者123 更新时间:2023-11-30 23:49:36 25 4
gpt4 key购买 nike

在经历了许多令人毛骨悚然的挫折之后,我终于得到了一个 PerlMagick 模块版本,可以与我的 ActivePerl 5.10.0 build 1005 一起使用。现在我正在使用它来进行一些非常基本的颜色替换。

我已经可以使用以下代码将一种颜色(例如黑色)替换为另一种颜色(例如蓝色):

#!perl
use strict;
use warnings;
use Image::Magick;

my $image = Image::Magick->new;
$image->Read('color-test.bmp');
$image->Opaque(fill => 'blue', color => 'black');
$image->Write('result.bmp');

但我想知道是否可以用蓝色替换任何不是黑色的颜色。我希望并认为有一些惯用的语法来实现这一点,所以我要求快速帮助:) 有什么想法吗?

一如既往地感谢您的任何指导/建议/评论 :)

更新

@rjh,感谢您提供代码和信息 :) 我尝试了所有这些,并稍加调整,它们都像魅力一样工作!

旧版本无法运行。我的 PerlMagick 是 6.5.4,但稍加调整后,它也可以这样工作:

  use strict;
use warnings;
use Image::Magick;

my $image = Image::Magick->new;
$image->Read('color-test.bmp');
$image->Transparent(color=>'black');
$image->Colorize(fill=>'blue');
$image->Composite(image=>$image);
$image->Write('result.bmp');

嗯,我当然喜欢你的第二个版本。太棒了这正是我所期待的语法,呵呵:)

第一个命令行版本也很好用,虽然我没想到这个版本。

再次感谢!

最佳答案

在 ImageMagick 6.3.7-10 及更高版本中,您可以使用 opaque 的“+”形式来反转颜色选择。此命令会将任何不是黑色的东西转换为蓝色:

convert in.gif  -fill blue +opaque black   out.gif

在 Perl 中,这可以通过以下方式完成:

$image->Opaque(fill => 'blue', color => 'black', invert => 'True');

如果您只有旧版本,仍然可以通过

convert out.gif \
\( +clone -matte -transparent black \
-fill blue -colorize 100% \) \
-composite in.gif

...我将留给您将其转换为 Perl API。

来源:http://www.imagemagick.org/Usage/color/#opaque - 一般而言,ImageMagick 操作的有用资源。

关于perl - 如何使用 PerlMagick 替换任何不是特定颜色的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2350740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com