在经历了多次挫折之后,我终于有了一个版本的PerlMagick模块,使用我的ActivePerl 5.10.0Build 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');我当然喜欢你的第二个版本。太棒了。这正是我所期待的语法,呵呵:)
第一个命令行版本也运行良好,尽管我没有预料到这个版本。
再次谢谢!
发布于 2010-02-28 12:16:30
在ImageMagick 6.3.7-10及以上版本中,您可以使用“+”形式的不透明来反转颜色选择。此命令将转换使用蓝色的任何非黑色的内容:
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...which我将留给您将其转换为Perl。
资料来源:http://www.imagemagick.org/Usage/color/#opaque -- ImageMagick操作的有用资源。
https://stackoverflow.com/questions/2350740
复制相似问题