Pagina de start a forumului Comunitatea JustUs  
FAQ Cautare
Membri Grupuri
Profil Mesaje private
Inregistrare Autentificare
Creare imagini cu PHP
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Comunitatea JustUs Tutoriale PHP | MySql
Subiectul anterior :: Subiectul urmator  
Autor Mesaj
Elektro_Love
Administrator
Administrator
Elektro_Love

Data inscrierii: 21/Iul/2010
Mesaje: 101

MesajTrimis: 21/07/2010 19:02    Titlul subiectului: Creare imagini cu PHP Raspunde cu citat (quote)

Pe langa crearea de cod de tip text (HTML, XML, ...), PHP poate fi utilizat si pentru crearea si manipularea de imagini cu diverse formate (GIF, PNG, JPEG, WBMP si XPM).
PHP are implemetat cateva functii pentru fapt cu informatii legate de imagini, cum ar fi lungimea, latimea sau extensia imaginii. Pentru crearea de noi imagini sau manipularea celor existente este necesar sa aveti instalat in PHP o librarii GD cu functii pentru imagini. Pentru mai numeroase informatii despre cerinte si instalare librarie GD, vizitati GD library.
- Daca folositi WampServer sau Xampp, acestea au deja incluse librarii GD.
Puteti afla informatii despre libraria GD instalata folosind functia gd_info(), aceasta returneaza o matrice cu informatii despre libraria GD inclusa.
Exemplu:

Citat:
<?php
var_dump(gd_info());
?>


1. Crearea imaginilor

Pentru crearea unei imagini cu PHP sunt esentiali urmatorii pasi:
- Definirea identificatorului de imagine si suprafata de baza a imaginii.
- Stabilirea culorilor fundalului, siluetei sau a textului din imagine.
- Trimiterea datelor de iesire cu imaginea creata.
- Eliberarea memoriei asociata creeri imaginii.
Cam asta e, pe scurt, partea teoretica, acum sa trecem la practica, voi prezenta pas cu pas un script PHP modest care va afisa in browser o imagine PNG formata dintr-un dreptunghi cu fundal albastru si in interior un text.
Scriptul este urmatorul:

Citat:
<?php
$text = 'Textul din imagine';

// setare mărimi suprafetei de baza
$height = 40;
$width = 170;
// definirea imaginii
$im = imagecreate($width, $height);

// setare culori
$fundal = imagecolorallocate($im, 10, 10, 250);
$text_color = imagecolorallocate($im, 255, 255, 255);

// finalizarea imaginii
imagefill($im, 0, 0, $fundal);
imagestring($im, 4, 10, 15, $text, $text_color);

// trimiterea datelor de iesire
header('Content-type: image/png');
imagepng($im);

// curatarea memoriei
imagedestroy($im);
?>


Sa studiem acest script
- Pentru inceput am setat variabila "$text" ce contine textul care va fi adaugat in imagine, si variabilele "$height" si "$width" care reprezinta dimensiunile imaginii.
- In continuare avem "$im = imagecreate($width, $height)", functia imagecreate() returneaza un identificator de poză ce creaza suprafata de baza a imaginii, prelund ca argumente mărimile acesteia (in pixeli).
- Ca alternativa se poate folosi o imagine deja existenta, peste care sa adaugati testul, pentru aceasta se foloseste functia imagecreatefrompng("nume.png") (sau "imagecreatefromjpeg()", "imagecreatefromgif()"; in functie de tipul imaginii), exemplu: $im = imagecreatefrompng("img.png")
- Urmatorul pas este definirea culorii pentru fundal si pentru text, pentru aceasta se foloseste functia imagecolorallocate(), aceasta returneaza un identificator de culoare care va fi folosit pentru accesarea culorii si preia 4 argumente: debutantul argument este identificatorul de imagine creat cu "imagecreate()" (in script este in variabila "$im"), urmatoarele trei argumente reprezinta valorile RGB (Red, Green, Blue) pentru stabilirea culorii.
- Pentru adaugarea culorii de fundal se foloseste functia imagefill(), care preia 4 argumente (in script avem "imagefill($im, 0, 0, $fundal);"), argumentele sunt:
- identificatorul de imagine
- urmatoarele doua argumente definesc coordonatele X si Y de start pentru umplerea nuanței (0, 0)
- ultimul argument reprezinta identificatorul de culoare folosit (aici cel din variabila $fundal)
- Pentru adaugarea textului in cadrul imaginii se foloseste functia imagestring(), aceasta preia 6 argumente:
1. - identificatorul de imagine
2. - tipul fondului folosit, care poate fi un numar intre 1 si 5, reprezentand fonturi prestabilite
- ca alternativa se poate folosi functia imageloadfont(), pentru includerea de alte fonturi
3. - al treilea argument reprezinta distanta, in pixeli, fata de marginea din stanga a imaginii
4. - al patrulea argument reprezinta distanta, in pixeli, fata de marginea de sus a imaginii
5. - al cincilea argument reprezinta sirul introdus
6. - ultimul argument este nuanță textului
- Urmatotul pas este trimiterea datelor de iesire pentru afisarea in browser.
- Pentru aceasta intai scriptul spune browser-ului ca trimite o imagine si nu test sau HTML, se face acest lucru utilizând functia header() cu tipul MIME al imaginii "header('Content-type: image/png')". Daca doriti ca imaginea sa fie de tip JPEG (sau GIF) inlocuiti "png" cu "jpeg" (sau "gif"), astfel 'Content-type: image/jpeg'.
- dupa ce s-au trimis datele pentru "header", se trimit datele imaginii utilizand functia imagepng() (sau "imagejpeg()", "imagegif(); in functie de tipul imaginii") care preia ca argument identificatorul de fotografie (in script avem "imagepng($im)")
Ca alternativa, imaginea poate fi scrisa intr-un fisier, in loc sa fie afisata in browser o salvati pe server, pentru aceasta se adauga un al doilea parametru la "imagepng()" reprezentand numele fisierului, exemplu "imagepng($im, "img.png")" si nu se mai scrie functia "header()". (trebuie sa aveti permisiuni de scriere pe server)
- In final s-a folosit functia imagedestroy() (care foloseste ca argument identificatorul de imagine) pentru eliberarea resurselor de memorie utilizate la crearea imaginii.
2. întrebuințarea imaginilor create cu PHP

Deoarece un header poate fi trimis numai o data pentru o pagina, si asta este singura cale de a spune browser-ului ca sunt trimise date de imagine, poate deveni mai dificil cand se doreste crearea si afisarea mai multor imagini cu PHP.
In acest caz:

a) Puteti folosi scriptul pentru a salva imaginea pe server (dupa cum a fost explicat mai sus) si apoi folositi etichete <img> pentru afisarea imaginii
- Exemplu:

Citat:
<?php
$text = 'Textul din imagine';

// setare dimensiuni
$height = 50;
$width = 170;
$im = imagecreate($width, $height);

// setare culori
$fundal = imagecolorallocate($im, 10, 10, 250);
$text_color = imagecolorallocate($im, 255, 255, 255);

// finalizarea imaginii
imagestring($im, 4, 10, 15, $text, $text_color);

// salvarea imaginii pe server
imagepng($im, "img.png");

// curatarea memoriei
imagedestroy($im);
?>

<img src="img.png" alt="Afisare 1" />
--- <img src="img.png" alt="Afisare 2" />


b) O alta metoda este scrierea intr-un fisier php extern a scriptului care genereaza si afiseaza imaginea, apoi apelati scriptul PHP in atributul src, ca in exemplul urmator:

Citat:
<img src="script_img.php" alt="Afisare 1" />
--- <img src="script_img.php" alt="Afisare 2" />


- Unde "script_img.php" este fisierul PHP care genereaza si afiseaza imaginea
Vezi profilul utilizatorului Trimite mesaj privat
Afiseaza mesajele pentru a le previzualiza:   
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Comunitatea JustUs Tutoriale PHP | MySql Ora este GMT + 3 ore
Pagina 1 din 1

 
Mergi direct la:  
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum
ezHyperShadow template - a boo design Original ezHyperShadow theme by boo ©2004 www.ez-life.net
Powered by phpBB © 2001, 2002 phpBB Group
Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro