Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re: Replace colors in an image

by tonyc (Pilgrim)
on Oct 05, 2005 at 00:06 UTC ( #497440=note: print w/replies, xml ) Need Help??

in reply to Replace colors in an image

A not so simple way of doing this in Imager:

#!perl -w use strict; use Imager; my $from = shift; my $to = shift; my $in = shift; my $out = shift or die "Usage: $0 fromcolor tocolor inimage outimage\n"; my $from_color = Imager::Color->new($from) or die "Cannot convert fromcolor $from into a color: ", Imager->errs +tr, "\n"; my $to_color = Imager::Color->new($to) or die "Cannot convert tocolor $to into a color: ", Imager->errstr, +"\n"; my $img = Imager->new; $img->read(file=>$in) or die "Cannot read image $in: ", $img->errstr, "\n"; my $result = replace_color($img, $from_color, $to_color) or die "Cannot replace colors: ", Imager->errstr, "\n"; $result->write(file=>$out) or die "Cannot write image $out: ", $result->errstr, "\n"; sub replace_color { my ($img, $from_color, $to_color) = @_; my ($from_red, $from_green, $from_blue) = $from_color->rgba; my ($to_red, $to_green, $to_blue) = $to_color->rgba; my $rpnexpr = <<'EOS'; x y getp1 !pix @pix red from_red eq @pix green from_green eq @pix blue from_blue eq and and to_red to_green to_blue rgb @pix ifp EOS my %constants = ( from_red => $from_red, from_green => $from_green, from_blue => $from_blue, to_red => $to_red, to_green => $to_green, to_blue => $to_blue, ); return Imager::transform2({ rpnexpr => $rpnexpr, constants => \%constants }, $img); }

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://497440]
[Corion]: I hope you're well too!
[thezip]: Where did you go? We've already set a record for all-time February rainfall here.
[Corion]: thezip: The Canary Islands - they have a constant climate
[Corion]: Maybe a bit too many old people, but for some do-nothing vacation for R&R exactly the right thing ;)=
[thezip]: That's awesome. I bet you feel totally rejuvenated and ready for the next thing.

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (10)
As of 2017-02-23 17:05 GMT
Find Nodes?
    Voting Booth?
    Before electricity was invented, what was the Electric Eel called?

    Results (349 votes). Check out past polls.