Imagerを使ってみた

Imagerを使って、bmpファイルをモノクロに変換してみました。
突っ込み所満載ですが、とりあえず何かして保存してみました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use warnings;
use strict;
use Imager;
 
my $img = Imager->new( file=>$ARGV[0] ) or
    die Imager->errstr();
 
for my $y (0..$img->getheight-1) {
    my @colors = $img->getscanline( y=>$y );
    my @pixels = ();
    foreach my $color (@colors) {
        my ($red, $green, $blue, $alpha) = $color->rgba;
         
        my $y = $red + $green + $green + $blue;
        $y = int( $y / 4 );
         
        push @pixels, ( $y, $y, $y, $alpha );
    }
    $img->setscanline( y=>$y, pixels=>pack('C*', @pixels) );
}
 
$img->write( file=>'result.bmp' ) or
    die "Cannot write: ", $img->errstr;
 
__END__

次は、最適化かな!
じゃなくて、jpegやpngのlibを入れたいデス。

おしまい。

Leave a Comment