Създаване на изображение с GD Library
08-11-2009
Понеже зачестиха въпросите във форума за това как се пише и рисува върху картинка с PHP, реших да направя поредица от уроци, обясняващи точно това. Рисуването става чрез GD Library (стандартната библиотека за рисуване на PHP).
За да можете да използвате GD Library на php, трябва да я имате инсталирана на web сървъра си. Дали я имате инсталирана може да проверите, като създадете следния файл и го стартирате:

index.php
<?php
echo phpinfo();
?>


Ако я имате инсталирана, трябва срещу полето GD Support да пише enabled, както е на тази снимка:



Сега след като изяснихме какво е нужно, за да можем да рисуваме с PHP, може да премием и към същинската част.

Първите функции, с които трябва да се запознаем, са функциите за създаване на изображение. Ще ги разгледам една по една, като ще се спрем само на най-важните от тях:

1. imageCreate(width, height)
Тази функция връща ресурс на изображението по зададените width и height. Засега не се притеснявайте какво точно се прави с този ресурс на изображението.
Стойности на двата параметъра:
width - цяло число
height - цяло число

2. imageCreateTrueColor(width, height)
Тази функция също връща ресурс на изображението по зададените width и height. Но в документацията на двете функции препоръчват нея.
Стойности на двата параметъра:
width - цяло число
height - цяло число

Първите две създават изображение, като за фонов цвят се използва черно. Другите функции, които ще покажа, създават изображение, като за негов фон ползват картинка. Това, въпреки че изглежда безполезно, се използва повече.

3. imageCreateFromJPEG("Файл.jpg")
Функцията връща ресурс на изображение, представляващ изображение, получено от данните на файла.
Стойността на параметъра:
Файл.jpg - стринг, представляващ името на файл с разширение .jpg или .jpeg

ВАЖНО: Тази функция се използва само за файлове с разширение .jpg или .jpeg. Причината за това е, че php предоставя функции за зареждане на изображение и с други разширения. Те са разгледани от следващите точки.

4. imageCreateFromPNG("Файл.png")
Функцията връща ресурс на изображение, представляващ изображение, получено от данните на файла.
Стойността на параметъра:
Файл.png - стринг, представляващ името на файл с разширение .png

ВАЖНО: Тази функция се използва само за файлове с разширение .png.

5. imageCreateFromGIF("Файл.gif")
Функцията връща ресурс на изображение, представляващ изображение, получено от данните на файла.
Стойността на параметъра:
Файл.gif - стринг, представляващ името на файл с разширение .gif

ВАЖНО: Тази функция се използва само за файлове с разширение .gif.

Тези 5 функции са основните и най-често използвани за създаване на изображение. Съществуват още няколко, но няма да се спирам на тях, защото не се използват толкова често. Все пак ще ги спомена, за да може, ако някой се интересува, да ги разгледа и тях:
imageCreateFromString(), imageCreateFromWbmp(), imageCreateFromXbm() и imageCreateFromXpm().


След като се създаде едно изображение другата най-важна част е то да се изкара на екрана или да се запази в дадена директория. Това са 3 от най-често използваните функции с тази цел:

1. imageJPEG(img_resource [,path, quality])
Функцията изкарва изображението на екрана, ако е попълнен САМО първият параметър. Вторият и третият не са задължителни, затова са поставени в квадратни скоби. Тези скоби не се използват! Ако е попълнен вторият - изображението се записва в дадената директория с даденото име. Третият определя качеството на изображението.
Стойността на трите параметъра:
img_resource - тук се слага променливата, на която сме присвоили ресурса, създаден от една от 5-те функции за създаване на изображение.
path - тук може да е само име на файл (ЗАДЪЛЖИТЕЛНО с разширение .jpeg или .jpg), но може да се оказва и път до директория и име.
quality - цяло число от 0 до 100. Определя качеството на изображението

2. imageGIF(img_resource [,path, quality])
Функцията е идентична с 1., единствената разлика е, че изображението трябва да е gif.

3. imagePNG(img_resource [, path, quality])
Функцията е идентична с 1. и 2., единствената разлика е, че изображението трябва да е png.

След всяка от трите функции за записване на изображението трябва да има следната функция:
imageDestroy(img_resource)
Тя освобождава заетата памет от изображението.
Стойността на параметъра:
img_resource - тук се слага променливата, на която сме присвоили ресурса, създаден от една от 5-те функции за създаване на изображение.

Има една много важна част от създаването на изображения, които няма да бъдат запазвани като файл. За такива изображения трябва да се окаже специален header, който да казва на сървъра как да третира файла. За всяка от описаните три функции има различен header:
imagejpeg() - header("Content-type: image/jpeg");
imagegif() - header("Content-type: image/gif");
imagepng() - header("Content-type: image/png");

Този header трябва да се слага непосредствено след <?php, за да може да се изкара изображението.
ВАЖНО:] header-ът е задължителен единствено ако функцията за създаване на изображение се ползва без втория аргумент.

Може да зареждате .jpeg изображение с функцията imageCreateFromJPEG(), но да го запазвате с функцията imagepng(). Това няма никакво значение, стига header-a да оказва png.

Примерен код от видео урока:

<?php
header("Content-type: image/jpеg");

//Широчината на картинката
$width = 200;

//Височината на картинката
$height = 100;

$image = imagecreate($width, $height);

imagejpeg($image);
imagedestroy($image);
?>


Файлове за сваляне
Файлове за сваляне - линк 1
Файлове за сваляне - линк 2
Файлове за сваляне - линк 3





Прочетете и следващия урок за Цветове и текст в GD Library


/ Трябва да сте регистриран за да напишете коментар /
От: sof200
19:21 22-01-2010
А които го нямат!?Ккво ще правят за д си го инсталират?!
От: Desirebg
22:07 08-03-2011
Невероятна работа.Благодаря Много
1