Acest articol discută activitatea din PHP cu biblioteca grafică GD - deschiderea, afișarea și salvarea imaginilor.
Procesarea imaginilor este acum foarte solicitată în scripturile limbajului de programare PHP. Luați în considerare cele mai frecvente cazuri de lucru cu fișierele grafice.
Mai întâi, asigurați-vă că aveți instalată biblioteca GD - trebuie doar să rulați scriptul cu funcția phpinfo (); Ca urmare a executării scriptului, vor fi afișate informații despre această bibliotecă (conținute în blocul gd):
Primele noastre funcții vor fi crearea unei imagini noi sau deschiderea unei imagini existente. Pentru moment, să luăm în considerare deschiderea unei imagini existente:
După cum puteți vedea, funcția imagecreatefromjpeg () este utilizată pur și simplu pentru a deschide o imagine de tip JPEG, dar nu o afișa pe ecran. Variabila $ im conține calea spre imagine. Dacă fișierul specificat nu există, este afișat mesajul "Nu se poate deschide imaginea".
Dacă doriți să deschideți o altă imagine decât JPEG, dar, de exemplu, GIF, trebuie să apelați o altă funcție:
Dar poate că ați ghicit deja că această metodă de deschidere a fișierelor are un dezavantaj. Problema este că nu este întotdeauna posibil să cunoașteți tipul de fișier care se deschide, ceea ce reduce funcționalitatea scriptului.
Dar este suprasolicitabil. Pentru a rezolva această problemă, vom lua în considerare o funcție universală care va deschide fișierele grafice ale tuturor celor mai des întâlnite tipuri.
Deschiderea fișierelor de diferite tipuri
Funcția noastră universală poate deschide diferite tipuri de fișiere imagine prin definirea extensiei de fișier:
Dar chiar și această soluție nu rezolvă toate problemele: ce se întâmplă dacă fișierul are o extensie setată incorect? La urma urmei, o imagine JPG poate oferi cu ușurință o extensie GIF (test_jpg.gif) sau o imagine GIF numită "test_gif.txt".
Soluția este următoarea: navigați prin căile posibile de deschidere a fișierului cu funcția imagecreate (). La urma urmei, tipurile de fișiere grafice (cele mai frecvente) nu sunt atât de multe, ceea ce vă permite să determinați rapid acest tip exact.
Iată un exemplu de astfel de scenariu:
După cum puteți vedea, ideea este destul de simplă - pur și simplu sunăm funcția imagecreate () unul câte unul până când determinăm tipul fișierului grafic.
Totuși, este posibil să se determine tipul de fișier prin funcția getimagesize () - returnează o matrice care conține informații despre un fișier - [lățime, înălțime, imageType] (lățime, înălțime, tip de fișier) - în mai multe detalii despre această caracteristică - getimagesize.
Acum, că știm cum să deschidem corect imaginea, să analizăm funcțiile de procesare.
Afișați și salvați o imagine
După ce deschideți imaginea și efectuați manipulări cu ea, este firească dorința de a vedea rezultatele lucrării. Pentru aceasta, există funcții speciale, cum ar fi imagegif () și imagejpeg ().
Iată un exemplu de utilizare a acestora:
Dacă executați acest script pe link-ul de mai sus, atunci rezultatul va va surprinde: în loc de imagine puteți vedea un set de caractere obscure - acesta este browser-ul Opera ca Mozilla Firefox, motor browser-ul IE (CAM Internet Explorer, Avant si Maxton) sunt capabili să identifice corect tipul de fișier.
Acest lucru se întâmplă din simplul motiv că nu am trimis în browser browserul cu antetul corect de antet. La urma urmei, tipul implicit este "text / html", motiv pentru care browserele au definit incorect tipul de fișier - în loc de o imagine, a fost afișat un fișier text. Ce sa întâmplat, ați văzut deja.
Pentru a rezolva această problemă, trebuie să setați explicit formatul de date utilizând câmpul cu antet Content-Type:
Dacă rulați acum acest script, veți vedea că imaginea este afișată corect în toate browserele. De asemenea, este posibil să salvați imaginea pe hard disk. De asemenea, puteți specifica în mod explicit numele imaginii salvate - acesta este al doilea argument din funcția imagejpeg ().
Iată cum arată:
Ca urmare a executării scriptului, fișierul my_image.jpg apare în dosarul dvs. Deoarece în acest caz nu afișăm imaginea pe ecran, nu este necesar să trimitem un câmp cu antet explicit.
Iată câteva exemple mai practice de utilizare a bibliotecii GD
Folosind funcția imagepolygon (), puteți crea un poligon (poligon).
bool imagepolygon (resursă imagine, puncte matrice, int num_points, culoare int)
imagepolygon () creează un poligon în imagine.
image - indică imaginea pe care va fi desenat poligonul
puncte este o matrice PHP care conține vârfurile poligonului, adică punctele [0] = x0, punctele [1] = y0, punctele [2] = x1, punctele [3] = y1, etc.
num_points reprezintă numărul total de vârfuri.
culoarea este culoarea liniilor de poligon, dată de imagecolorallocate ()
De asemenea, trebuie să folosim funcția imagecreate () pentru a crea o imagine, să specificăm coordonatele poligonului ca matrice, numărul de coordonate și culoarea liniilor de poligon.
Folosind Biblioteca GD a bibliotecii cu funcția imagerotate (), puteți roti imaginea într-un unghi specificat.
resursă imagerotate (resursă src_im, unghi de flotare, int bgd_color)
Roti imaginea src_im cu un unghi de unghi.
Argumentul bgd_color este trecut printr-un identificator de culoare de fundal, care este utilizat pentru a umple zonele goale care vor fi obținute în timpul rotirii imaginii.
Conversia unei imagini în gri (în tonuri de gri)
Un pic de teorie este că algoritmii pentru conversia imaginilor de la culoare (RGB) la gri (YIQ) sunt de înțeles:
Modelul YIQ color (model color YIQ)
Fiecare culoare din modelul YIQ este dată prin stabilirea valorilor de trei parametri: Y - intensitate (luminanta,) și două Cromaticități I și Q, împreună să permită crearea de control al culorilor folosind culori verde, albastru, galben și magenta.
Deci setarea valorilor minime ale lui I și Q (0, 0) are ca rezultat o culoare verde, iar setarea valorilor lor maxime (255.255) produce o culoare purpurie. Fiecare dintre componentele modelului YIQ poate varia de la 0 la 255.
Prima parte a scriptului îndeplinește funcțiile de pregătire a unei imagini pentru conversia culorilor:
Generarea unei imagini alb-negru
Există două bucle pentru a traversa întreaga imagine cu coordonatele Y și X.
Folosind funcția imagecolorat (), returnați indicele de culoare pixel în paleta de culori care se află în imagine (variabila sursă) la coordonatele x. y (variabilele $ x. $ y).
Apoi vine apelul la funcția yiq () pentru a converti culorile imaginii în tonuri gri. În fine, funcția imagesetpixel () este utilizată pentru a desena un pixel cu culoarea specificată la coordonatele x. y în imagine.
Sper că după ce ați citit acest articol, veți înțelege câteva aspecte legate de lucrul cu grafica în PHP. Deși articolul oferă doar funcții de bază, este deja clar că PHP are un set excelent de funcții pentru generarea și editarea elementelor grafice.