»  Pagina principala  »  PHP si mysql »  Convertire imagini in ASCII

Convertire imagini in ASCII

      Probabil ati vazut imagini ASCII foarte detaliate 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 si 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 in WORD sau alt editor de text. Pentru asta trebuie copiate din pagina unde sunt generate (ctrl+a), puse in word, iar foarte important este sa setati marimea fontului la 5 sau 6 pixeli si line spacing la 2 sau 3 (Format > Paragraph > Line spacing > Exactly > 2 sau 3 pixeli)[ms word 2003].


     


Convertor ASCI ->>






      Ce vom face este destul de simplu. Vom citi dimensiunile 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 aceeasi culoare....
     Toate acestea sunt posibile datorita a doua functii PHP: ImageCreateFromJpeg() si ImageColorAt(), functii care permit citirea culorii  unui anumit pixel daca stim coordonatele acestuia.
     Scriptul va avea un singur fisier, index.php , imaginea va fi luata sprea a fi prelucrata dintr-un link prin metoda $_POST. Iata codul care transforma imaginile jpg in arta ASCII:

<html>
<head>
<title>Ascii</title>
<style>
/* formatari pentru marimea caracterelor care va forma imaginea. Pentru  ca imginea sa-si pastreze aspect-ratio line-height trebuie sa fie 0.5 din font */
body{
    line-height:3px;
    font-size:6px;
}
</style>
</head>
<body>
<?php
/* 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'])){
?>
<form action="<?echo $_SERVER['PHP_SELF'];?>" method="post">
    URL imagine: <input type="text" name="image"><br>
    <input type="submit" name="submit" value="Create">
</form>
<?
}else{
    $image = $_POST['image'];
    $ext = getext($image); //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 '<span style="color:rgb('.$r.','.$g.','.$b.');">#</span>';
            $widthi=$width-5;
            
            if($w >= $widthi){
                echo '<br>';
            }
        }    
        }
        }
    }
}
?>  
</body>
</html>

         Asta este codul. Puteti sa-i dati copy-paste si sa-l probati. Am ales sa afisez din 6 in 6 pixeli pentru ca in cazul afisarii pixel cu pixel codul generat va fi foarte foarte mare.
        Am reusit astfel sa facem dint-o imagine JPG, o imagine din litere, caractere (#), care poate fi vizualizata in browser sau intr-un editor de text (ex. WORD), cum am explicat mai sus.
       Va oferim si un exemplu al acestui script:





Comentarii



   Ioi

SURSA NOOB CE ESTI ;) Dak Copiezi Scrie Si Sursa www.tutorialul.ro Din Respect Pentru Admini
29-Aug-2010 - 18:59


   bozy

Ai o mare problema la cap sau doresti sa faci spam. tutorialul.ro cred ca este aparut mai tarziu decat acest articol care este scris de mine (codul imi apartine si el).
02-Sep-2010 - 08:46



Voteaza acest articol!
 



Trimite un comentariu!

Nume *
E-mail *
Comentariu *
  Vreau sa fiu anuntat de urmatoarele mesaje la acest articol

Security image

Cristian Bozeanu

Free Mini Games

Cloud tag

tutorial, photoshop, html, css, javascript, flash, php, mysql, grafica 3D, tutorial, coduri, scripturi, generator de coduri, cursuri php