perlを使って画像を■の羅列でを表示
ニコニコ動画を見ていたらPHPを使って画像を■で表示するってのを見かけたので、perlで作ってみました。
何か役に立つのかといえばNOですが、手段が目的みたいなものでしいて言えばperlでGDを使う勉強になるかな?で、下がその動画です。
perlのソースは以下の通りです。
というわけでソースです。GDライブラリ使ってます。画像をそのままのサイズで■に変換するとあまりにも重いので、
幅80ピクセルの縮小してから、■に変換しています。
use GD;
$tw = 80;
$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++){
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 .= “<font
color=#$hr$hg$hb>■</font>”;
}
$HTML .= “<br>”;
}$HEAD =<<“EOF”;
<html>
<head>
<style type=”text/css”>
<!–
body {
line-height: 100%;
letter-spacing: 0px;
}
–>
</style>
</head>
<body>
<table>
<tr>
<td nowrap>
EOF$FOOT =<<“EOF”;
</td>
</tr>
</table>
</body>
</html>
EOFopen(FILE,”>a.html”);
print FILE $HEAD;
print FILE $HTML;
print FILE $FOOT;
close(FILE);
サンプルの画像はHP素材のおすそわけ。
blogさんから頂いてきました。
実際に出来たhtmlはここです。
タグ :