首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PerlMagick替换非特定颜色的任何颜色?

如何使用PerlMagick替换非特定颜色的任何颜色?
EN

Stack Overflow用户
提问于 2010-02-28 10:23:01
回答 1查看 1.4K关注 0票数 3

在经历了多次挫折之后,我终于有了一个版本的PerlMagick模块,使用我的ActivePerl 5.10.0Build 1005。现在我用它来做一些非常基本的颜色替换。

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

代码语言:javascript
复制
#!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,但是稍微适应一下,它的工作原理如下:

代码语言:javascript
复制
  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');

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

第一个命令行版本也运行良好,尽管我没有预料到这个版本。

再次谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-28 12:16:30

在ImageMagick 6.3.7-10及以上版本中,您可以使用“+”形式的不透明来反转颜色选择。此命令将转换使用蓝色的任何非黑色的内容:

代码语言:javascript
复制
convert in.gif  -fill blue +opaque black   out.gif

在Perl中,这可以通过以下方法实现:

代码语言:javascript
复制
$image->Opaque(fill => 'blue', color => 'black', invert => 'True');

如果你只有一个旧版本,它仍然可以做,通过

代码语言:javascript
复制
convert out.gif \
      \( +clone -matte -transparent black \
         -fill blue  -colorize 100% \) \
      -composite    in.gif

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

资料来源:http://www.imagemagick.org/Usage/color/#opaque -- ImageMagick操作的有用资源。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2350740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档