perlでテーブルアート

 にわとりテーブル
↑これ画像の様ですけど実はテーブルタグだけでできてます。

perlを使って画像を■の羅列でを表示と同じくニコニコ動画みてたら画像をテーブルタグで表示するってのがあったのでperlで作ってみました。
下がその動画です。

perlのソースは以下の通りです。

例によって重いのであらかじめ画像を幅100ピクセルに縮小してからテーブルタグを生成しています。
具体的にどういうことをしているかというと、
GDライブラリをつかって画像を読み込んで全てのピクセルの色を調べながらテーブルタグを生成しbgcolorに取得した色を設定しているだけです。
あと最初の方で画像の縮小の処理をしています。

use GD;

$tw = 100;
$fname = “01-hiyo-s2.gif”;

$imageorg = GD::Image->new($fname);
$er = $imageorg->width/$tw;
$dw = int($imageorg->width/$er);
$dh = int($imageorg->height/$er);
$image = new GD::Image($dw,$dh);
$image  = GD::Image->newTrueColor( $dw, $dh );
GD::Image::copyResampled($image,$imageorg,0,0,0,0,$dw,$dh,$imageorg->width,$imageorg->height);
my($HTML) =”;
for($y=0;$y < $image->height; $y++){
 $HTML .= “<tr>”;
 for($x=0; $x < $image->width; $x++){
  $index = $image->getPixel($x,$y);
  my($r,$g,$b) = $image->rgb($index);
  $hr = unpack(“H2”,pack(“C”,$r));
  $hg = unpack(“H2”,pack(“C”,$g));
  $hb = unpack(“H2”,pack(“C”,$b));
  $HTML .= “<td width=1 height=1
bgcolor=#$hr$hg$hb></td>”;
 }
 $HTML .= “</tr>”;
}

$HEAD =<<“EOF”;
<html>
<body>
<table border=”0″ cellspacing=”0″ cellpadding=”0″>
EOF

$FOOT =<<“EOF”;
</table>
</body>
</html>
EOF

open(FILE,”>table.html”);
print FILE $HEAD;
print FILE $HTML;
print FILE $FOOT;
close(FILE);

変換元の画像はHP素材のおすそわけBlogから頂いてきました。

でもって生成したhtmlはここです。

 

 

 

タグ :