在经历了许多令人沮丧的挫折之后,我终于得到了一个版本的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');
嗯,当然我喜欢你的第二个版本。这是超级的。这是我期待的语法,呵呵:)
第一个命令行版本也运行良好,虽然我没想到这个版本。
再次,谢谢!
答案 0 :(得分:10)
在ImageMagick 6.3.7-10及更高版本中,您可以使用“+”形式的opaque来反转颜色选择。此命令将使用blue:
转换非黑色的任何内容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操作的有用资源。