2007/04/23(月) [n年前の日記]
#3 [prog][perl] PerlMagick(ImageMagick)でゼロからgif画像を作るにはどうすればいいんだ
パレット値のみがある状態で、1x1とか4x4とか16x1とかそんな感じのgif画像を作りたいのだけど。何を $image->Set(hoge=>'piyo') すりゃいいのやら。
#!/usr/bin/perl use strict; use Image::Magick; my $image; $image = Image::Magick->new; $image->Set(size=>'16x16'); $image->Set(geometry=>'16x16+0+0'); $image->Set(colorspace=>'RGB'); $image->ReadImage('xc:black'); $image->Set(background=>'#000000'); for ( my $i = 0; $i < 256; $ i++ ) { my $s = sprintf("#%02x%02x%02x", $i, $i, $i); # print "$s\n"; $image->Set("colormap[$i]" => $s); my $x = $i % 16; my $y = int($i / 16); $image->Draw(primitive=>'point', points=>"$x,$y", fill=>$s); } $image->Set(class=>'Pseudo'); $image->Set(type=>'Palette'); $image->Set(depth=>'8'); $image->Set(colors=>'256'); $image->Set(format=>'gif'); $image->Set(magick=>'gif'); for ( my $i = 0; $i < 256; $ i++ ) { # my $s = sprintf("#%02x%02x%02x", $i, $i, $i); my $s = sprintf("rgb(%d,%d,%d)", $i, $i, $i); $image->Set("colormap[$i]" => $s); my $x = $i % 16; my $y = int($i / 16); # $image->Set("index[$x,$y]" => "$i"); } my $x = $image->Write('output/output.gif'); warn "$x" if "$x"; undef $image; exit;これじゃダメなのだった。どうすりゃいいんだ。
[ ツッコむ ]
以上です。