Text::AAlibを書いています。
XSを書く練習の続き。
前回はごりごりとXSで書くというものだったので、
今回はライブラリのバインディングにチャレンジ。
扱うライブラリは
というアスキーアートを作るためのライブラリ。
現状
必要最低限な機能だけとりあえず実装しました。
機能的にドキュメント読んだだけではよくわからないところが
あるので、それについてはソースを読んで充実させていく予定です。
テストの書き方も今一つわかっていないので、他のライブラリの
実装も見て勉強する必要がありそうです。
#!perl use strict; use warnings; use Text::AAlib; use Imager; my $file = shift or die "Usage: $0 image"; my $img = Imager->new(file => $file) or die Imager->errstr; my ($width, $height) = ($img->getwidth, $img->getheight); my $aa = Text::AAlib->new("a.txt", { width => $width, height => $height, }); for my $y (0..($height-1)) { for my $x (0..($width-1)) { my $color = $img->getpixel(x => $x, y => $y); my ($h, $s, $v) = $color->hsv; $aa->putpixel($x, $y, $v); } } $aa->fastrender(); $aa->flush(); $aa->close();
結果
実行して得られた結果は以下のとおりです。(小飼弾さんのデフォルメ)
目を細めるとわからんでもないというところですかね。