vineri, 6 februarie 2009

Convertire imagini in ASCII

Creati imagini din litere si simboluri folosind PHP.


        Probabil ati vazut imagini ASCII foarte etaliate si complexe si v-ati intrebat cum se fac.
Voi face si explica un script PHP prin care se pot obtine astfel de reprezentari ale imaginilor si va pun la dispozitie un generator de imagini ASCII, acesta avand anumite limitari legate de dimensiunile imaginii pentru a nu solicita in mod exagerat serverul.
    Imaginile astfel create vor fi formate din litere de diverse culori si pot fi transferate si an WORD sau alt editor de text. Pentru asta trebuie copiate din paginile unde sunt generate (ctrl + a), puse in WORD iar foarte important este sa setati marimea fontului la 5-6 pixeli si linie speacing la 2-3 (format>paragraph>linie spacing>exactly>2 sau 3 pixeli) [ms word 2003]

convoertor ASCII ->


















Ce vom face este destul de simplu. Vom citi dimensiunea imaginii pe care dorim sa o convertim in cod ASCII, cu ajutorul a doua for-uri vom parcurge imaginea ca pe o matrice, (pixel cu pixel), vom trece culoarea fiecarui pixel intr-o variabila si vom afisa pentru fiecare pixel un caracter de aceiasi culoare...
Toate acestea sunt posibile datorita a doua functii PHP: Image Create From Jpeg() si Image Color A(), functii care permit citirea culorii unui anumit pixel daca stim coordonatele acestuia.
Scriptul va avea un sigur fisier, index.php imaginea va fi luata spre a fi prelucrata intr-un link prin metoda $_POST.
Iata codul care transforma imaginile jpg in arta ASCII:









/* functia care citeste extensia imaginii */
function getext($filename) {
    $pos = strrpos($filename,'.');
    $str = substr($filename, $pos);
    return $str;
}
/* daca nu este apasat butonul de submit afisam formularul, iar daca este  afisat  executam codul de  creare  a  imaginii ASCII */
if(!isset($_POST['submit'])){
?>
" method="post">
    URL imagine < e = " t e x t " e = " i m a g e "> <>  
    < e = " s u b m i t " e = "  s u b m i t " e = " C r e a t e ">


//punem extensia intr-o variabila
//verificam daca este jpg  
if($ext == ".jpg"){
        $img = ImageCreateFromJpeg($image);
    }
    else{
        echo'Tipul Fisierului este gresit';
    }
//citim dimensiunile imaginii
    $width = imagesx($img);
    $height = imagesy($img);
// am ales sa afisez din 6 in 6 pixeli     
    for($h=0;$h<$height;$h++){ if($h%6==0) {
        for($w=0;$w<=$width;$w++){ if($w%6==0) {
           // trecem culorile fiecarui pixel in cate o variabila     
            $rgb = ImageColorAt($img, $w, $h);
            $r = ($rgb>> 16) & 0xFF;
            $g = ($rgb>> 8) & 0xFF;
            $b = $rgb & 0xFF;
           // afisam cate un caracter de culoarea pixelului
            echo '#';
            $widthi=$width-5;
            
            if($w>= $widthi){
                echo '
';
            }
        }    
        }
        }
    }
}
?>  

 

Tutoriale © 2008. Template by Dicas Blogger.

TOPO