Imagerを使ってみた

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

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