nitoyon さんのブログ で 幕末古写真ジェネレーター の内部処理と as での実装方法が検証されていたので、Perl で Imager のフィルタモジュールにしてみた。
書いたフィルタの Imager::Filter::Bakumatsu は、nitoyon さんのエントリをそのままなぞったつもりです。が、Imager に flash.filters.ColorMatrixFilter のオフセットに相当するものがない(と思う)ので、これだけに XS 書くのもたいへんなんで明るくしてから上と下を削るみたいな感じでやってみた。ソースは coderepos のこのへんです。
use Imager;
use Imager::Filter::Bakumatsu;
my $img = Imager->new;
$img->read($filename) or die $img->errstr;
$img->filter(type => 'bakumatsu');
$img->write(type => 'jpeg', file => 'new.jpg');
な感じで使えます。使う人いるかわかりませんが。
サンプル。元の写真↓
今回書いた Imager::Filter::Bakumatsu による幕末↓
nitoyon さんの as による実装による幕末↓
オリジナルの幕末古写真ジェネレーターによる幕末↓
モジュールとして Bakumatsu という名前はいかがなものかと思うのだけど、こういう写真は英語圏の人は何て呼ぶんだろうか? → 英語の Wikipedia に幕末という項目 があったので、Imager::Filter::Bakumatsu で CPAN に UP