mieki256's diary



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;
これじゃダメなのだった。どうすりゃいいんだ。

以上です。

過去ログ表示

Prev - 2007/04 - Next
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 26 27 28
29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project