Dynamiczne dodawanie tekstu do grafiki
14 July 2008
Comments
PHP oferuje nam poprzez m.in. biblioteki GD narzędzia do edycji plików graficznych. Możemy rysować proste wzory, tekst czy edytować same grafiki: robić miniaturki, nakładać grafiki na siebie i wiele więcej. By poniżej opisane skrypty działały musimy mieć zainstalowaną biliotekę GD. Zazwyczaj darmowe serwery czy niektóre prostsze serwery na komputer nie mają jej. W tym drugim przypadku radzę stosować XAMPPa. Ten artykuł poświęcony jest umieszczaniu tekstu na grafice.Dodawanie tekstu
Teraz zajmiemy się nanoszeniem tekstu na grafiki. Oto przykładowy skrypt:<?php
// Otwieramy plik graficzny
$rysunek = ImageCreateFromJpeg("banner.jpg");
// Definicje kolorów jako składowe RGB
$bialy = ImageColorAllocate($rysunek, 255, 255, 255);
$nieb = ImageColorAllocate($rysunek, 0, 255, 255);
// Lokacja łańcucha i jego wartość
ImageString($rysunek, 15, 50, 10, "tekst1", $bialy);
ImageString($rysunek, 5, 180, 20, "tekst2", $nieb);
// Stworzenie wynikowej grafiki
header("Content-type: image/jpeg");
ImageJpeg($rysunek);

<?php
ImageString($rysunek, X, Y, Z, "lancuch", $kolor);
Gdy już nanieśliśmy wszystkie teksty wysyłamy nagłówek (header) i wyświetlamy efekt końcowy za pomocą ImageJpeg. Powyższy przykład dotyczy plików jpg i jpeg. Dla PNG mielibyśmy ImageCreateFromPng, header("Content-type: image/png") i ImagePng($rysunek). W identyczny sposób dla GIFa lecz niektóre wersje GD nie mają wsparcie dla gifów (raczej na taką nie trafimy, ale warto pamiętać o tym). Efekt końcowy:

Zaawansowane dodawanie tekstu
Zaprezentowany skrypt nie daje nam możliwości określenia czcionki czy nachylenia tekstu. GD oferuje również bardziej zaawansowane funkcje umożliwiające wybór czcionki z pliku TIF. Oto przykład:<?php
$rysunek = ImageCreateFromJpeg("banner.jpg");
$bialy = ImageColorAllocate($rysunek, 255, 255, 255);
$nieb = ImageColorAllocate($rysunek, 0, 255, 255);
ImageTTFText($rysunek, 16, 5, 12, 30, $bialy, 'rksig/fonts/kirstybi.ttf', 'Test czcionki');
ImageTTFText($rysunek, 20, 0, 170, 40, $bialy, 'rksig/fonts/Nokian.ttf', 'Matrix');
header("Content-type: image/jpeg");
ImageJpeg($rysunek);
<?php
ImageTTFText($rysunek, X, Y, Z, Q, $kolor, 'link/do/pliku TTF', 'Łańcuch');

Pobieranie danych o rysunku
PHP posiada natywną funkcję pobierającą dane o rysunku (nie jest wymagane GD). Oto przykład:<?php
$info = GetImageSize("banner.jpg");
echo '<pre>';
print_r($info);
echo '</pre>';
<?php
Array
(
[0] => 400
[1] => 50
[2] => 2
[3] => width="400" height="50"
[bits] => 8
[channels] => 3
[mime] => image/jpeg
)
RkBlog
Comment article