PerlのImagerでRPGツクール用画像素材を透過PNG画像に変換する

フリーで配布されているRPGツクール用画像素材の中には、改変してRPGツクール以外にも使用してよいというありがたい規約のものが存在する。

なのでさっそく素材として使おうとすると…背景が緑だかグレーだかの色で塗りつぶされていて透過になっていない!

おそらくこれがRPGツクール画像素材の規格なのだろうが、このままでは他のことに使いにくい。そのためこれを透過PNG画像に変換することを考える。

1個1コPhotoshopなどで加工してもよいが、なんとか楽をする方法を考えたい。

そういえば以前PerlのImagerをちょろっと勉強していたのを思い出し、それでなんとか自動化できないか、と考えた。

公式ドキュメントにバッチリ載ってる。

こんな感じで実現できた。

use Imager;

local $inputdir = './in';
local $outputdir = './out';

my @filelist = &get_files("$inputdir/");
foreach(@filelist){
	my @name = split(/\./,$_);
	my $in = Imager->new;
	$in->read( file => "$inputdir/$_") or die $imager->errstr."\n$inputdir/$_\n";
	my $work = Imager->new(xsize => $in->getwidth, ysize => $in->getheight, channels => $in->getchannels);
	my @color = $in->getcolors();
	$work->box(filled => 1, color => $color[0]);
	my $out = $work->difference(other => $in);
	$out->write( file => "$outputdir/$name[0].png")or die $out->errstr;
}

 

 

PerlのImagerでRPGツクール用画像素材を透過PNG画像に変換する」への1件のフィードバック

  1. ピンバック: 画像を透過させるWebサービスを作ってみた | ネタ帳(仮)

コメントは停止中です。