Może komuś się przyda/kogoś zainteresuje..
nie miałem gdzie tego rzucić:-)
http://imagelab.pl/zymen/ascii/
Działa dla jpg/png. Nad gif-ami pracuję :-)
<html> <head> <link href=\"zymen.css\" rel=\"stylesheet\" type=\"text/css\"> </head> <body> <form action=\"index.php\" method=\"GET\"> <table border=1 cellspacing=0 cellpadding=0 align=\"center\"> <tr><td style=\"color:rgb(255,255,255)\">Http pliku:</td><td><input type=\"text\" name=\"nazwa_pliku\" class=\"text\" value=\"<?=$_GET['nazwa_pliku'];?>\"></td></tr> <tr><td colspan=2 align=\"center\"><input type=\"submit\" value =\"Twórz!\"></td></tr> </table> </form> <BR><BR> <? { $file_name_tmp = \"tmp/\".rand(0,10000).$out[0]; //udalo sie ? if (!$plik_in || !$plik_out) { exit(); } //to czytajmy! while(!feof($plik_in)) { $data = fread($plik_in, 128); fwrite($plik_out, $data); } fclose($plik_in); fclose($plik_out); switch(strtolower($out[1])) { case 'jpg':case 'jpeg':{$pict = ImageCreateFromJPEG($file_name_tmp);break;} case 'gif':{$pict = ImageCreateFromGIF($file_name_tmp);break;} case 'png':{$pict = ImageCreateFromPNG($file_name_tmp);break;} } // header('Content-type: image/png'); $x = imagesx($pict); $y = imagesy($pict); $tekst = \"@\"; $rozmycie = 10; echo('<span>'); $ktory_znak=0; for($y_=0; $y_<$y; $y_+=3) { for($x_=0; $x_<$x; $x_+=2.25) { $ktory_znak+=1; // $znak = $tekst[$ktory_znak%strlen($tekst)]; $znak = $tekst[rand(0,count($tekst)-1)]; $rgb = ImageColorAt($pict, $x_, $y_); if ($ostatni_kolor+$rozmycie >= $rgb && $ostatni_kolor-$rozmycie <= $rgb) { echo($znak); }else { $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $ostatni_kolor=$rgb; echo('</span>'.'<span style=\"color:rgb('.$r.','.$g.','.$b.');\">'.$znak); } } $ostatni_kolor=-1; } } include('licznik.php'); ?>
<?php function tohex($color){ $color = '0' . $color; } return $color; } $error = ''; list($szer, $wys) = $imgsize; switch($imgsize[ 'mime' ]) { case 'image/jpeg': $img = imagecreatefromjpeg($_GET['path']); break; case 'image/png': $img = imagecreatefrompng($_GET['path']); break; case 'image/gif': $img = imagecreatefromgif($_GET['path']); break; default: $error = '<b>Zły format pliku lub plik nie istnieje</b><br><br>'; } $pixels = $szer * $wys; $wiersz = 0; $kolumna = 0; if($px_szer < 1) { $px_szer = 1; } if($px_wys < 1) { $px_wys = 1; } if($cellspacing < 0) { $cellspacing = 0; } } echo '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"><html><head><title></title><style type=\"text/css\">table, td{border: none;padding: 0px;color:#fff;font-family:verdana;font-size:10pt;}'. (isset($img) ? 'td{width:'. $px_wys .';height: '. $px_szer .';}' : '') .'body{background-color:#000;margin:0;padding:0;}a{color:#fff;}</style><meta http-equiv=\"Content-type\" content=\"text/html; charset=iso-8859-2\"></head><body><table style=\"width:100%;height:100%;\"><tr><td align=\"center\" style=\"width:100%;height:100%;\">'; echo $error . '<form action=\"?\" style=\"margin:0;\"><table width=\"400\"><tr><td>Wpisz ścieżkę pliku (*.jpg, *.png, *.gif):</td><td><input type=\"text\" name=\"path\" value=\"'. (isset($_GET['path']) ? $_GET['path'] : '') .'\"></td></tr><tr><td>Szerokość piksela:</td><td><input type=\"text\" name=\"px_szer\" value=\"'. (isset($_GET['px_szer']) ? $_GET['px_szer'] : '') .'\"></td></tr><tr><td>Wysokość piksela:</td><td><input type=\"text\" name=\"px_wys\" value=\"'. (isset($_GET['px_wys']) ? $_GET['px_wys'] : '') .'\"></td></tr><tr><td>Odstęp między pikselami:</td><td><input type=\"text\" name=\"cellspacing\" value=\"'. (isset($_GET['cellspacing']) ? $_GET['cellspacing'] : '') .'\"></td></tr></table> <input type=\"submit\" value=\"OK\"></form>'; } else { for($i=0; $i < $pixels; $i++) { $rgb = imagecolorsforindex($img, imagecolorat($img, $kolumna, $wiersz)); if($kolumna == $szer - 1) { $wiersz++; $kolumna = 0; if($i + 1 < $pixels) { } } else { $kolumna++; } } } ?>