PHP GD - [1] Początek
-1. Wymagania
..czyli czego będziesz potrzebował do rysowania.
- PHP w wersji co najmniej 4.3 (lub zainstalowaną dodatkową bibliotekę GD na serwerze)
- Mózgu ;p
0. Wprowadzenie
GD jest zbiorem funkcji w PHP (wcześniej, do PHP 4.3 było dodatkową biblioteką) umożliwiającą operacje na obrazkach. Dzięki nim możemy nakładać na obrazki różne efekty, zapisywać na nich tekst, tworzyć figury geometryczne, etc.
1. Tworzenie obrazka
1.1. ...od zera
Na początek stworzymy pusty obrazek. Służy do tego funkcja imagecreate, która przyjmuje dwa parametry - wysokość, oraz szerokość obrazka. Zwraca ona zaś "uchwyt" do naszego obrazka na którym będziemy operować. Na początku każdy nowo utworzony funkcją imagecreate obrazek jest wypełniony na czarno. Stworzony w ten sposób obrazek opiera się o określoną paletę kolorów. Manual PHP zaleca używanie funkcji imagecreatetruecolor, która zwraca obrazek bez ograniczeń względem palety.
1.2. ...z już istniejącego obrazka
Teraz pomyślmy... Mamy na serwerze obrazek, na który chcemy nakleić aktualną godzinę. Służą do tego funkcje: imagecreatefromjpeg, imagecreatefromgif lub imagecreatefrompng. Funkcje te przyjmują jeden parametr - ścieżkę do obrazka, z którego chcemy stworzyć "uchwyt" dla PHP GD. Wielkość obrazka w "uchwycie" zależy od wielkości obrazka źródłowego. Podobnie jak imagecreate zwracają "uchwyt" do otwartego obrazka.
2. Wyświetlanie "uchwytu"
Gdy mamy już w zmiennej uchwyt do stworzonego obrazka czas na jego wyświetlenie. Używa się do tego funkcji imagepng, imagejpeg, imagegif, w zależności w jakim formacie chcemy wyświetlić obrazek. Przed wykonaniem funkcji imagepng/imagejpeg/imagegif trzeba wysłać nagłówek do przeglądarki informujący ją, że będziemy "nadawać" obrazek w danym formacie.
3. Zwolnienie uchwytu
Gdy już nie korzystamy z uchwytu obrazka, warto zwolnić pamięć zajmowaną przez niego funkcją imagedestroy, która przyjmuje uchwyt do obrazka.
Przykład dla punktów 1, 2 oraz 3 - stworzenie pustego obrazka:
Kod PHP:
<?php
$image = imagecreatetruecolor(100, 100); // tworzymy uchwyt do pustego obrazka
header("Content-Type: image/gif"); // informujemy przeglądarkę, że zamierzamy nadawać dane w formacie obrazka GIF
imagegif($image); // wyświetlamy uchwyt w formacie GIF
imagedestroy($image); // zwalniamy pamięć zajmowaną przez uchwyt obrazka
?>
Przykład - otwarcie istniejącego obrazka JPEG i wyświetlenie go w formacie PNG (konwersja):
Kod PHP:
<?php
$image = imagecreatefromjpeg("obrazek.jpg"); // tworzymy uchwyt do już istniejącego obrazka JPG
header("Content-Type: image/png"); // informujemy przeglądarkę, że zamierzamy nadawać dane w formacie obrazka PNG
imagepng($image); // wyświetlamy uchwyt w formacie PNG
imagedestroy($image); // zwalniamy pamięć zajmowaną przez uchwyt obrazka
?>