Obróbka grafiki w PHP
14 July 2008
Comments
GD czyli GraphicDraw to biblioteka wykorzystywana przez PHP do obróbki grafiki. Stosowana wcześniej biblioteka ImageMagick obecnie praktycznie nie jest już używana ze względu na mniejszą wydajność i mniejsze możliwości (w PHP), choć czynione są próby stworzenia nowego lepszego rozszerzenia.Funkcja gd_info() zwraca tablicę zawierającą dane o bibliotece GD - wspieranych formatach itd:
Array ( [GD Version] => bundled (2.0.28 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => 1 [GIF Read Support] => 1 [GIF Create Support] => 1 [JPG Support] => 1 [PNG Support] => 1 [WBMP Support] => 1 [XPM Support] => 1 [XBM Support] => 1 [JIS-mapped Japanese Font Support] => )
Array ( [0] => 466 [1] => 351 [2] => 3 [3] => width="466" height="351" [bits] => 8 [mime] => image/png )
<?php
$size = getimagesize('nazwapliku');
$fp=fopen('nazwapliku', "rb");
if ($size && $fp)
{
header("Content-type: {$size['mime']}");
fpassthru($fp);
exit;
}
GD umożliwia też rysowanie-tworzenie plików graficznych.
imagearc( grafika_źródłowa, int cx, int cy, int w, int h, int s, int e, int kolor ) - rysuje okrąg (lub jego część) wycentrowany na cx, cy (góra lewo to 0,0). w i h to długość i wysokość. Początek i koniec (kąty) określane są przez argumenty s i e.
<?php
// twórz płótno 200x200
$img = imagecreatetruecolor(200, 200);
// biały i zielony
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 255, 0);
// robimy zielony okrąg
imagearc($img, 100, 100, 150, 150, 0, 360, $black);
// robimy mniejszy, półokrąg - 180 stopni
imagearc($img, 100, 100, 100, 100, 0, 180, $black);
// wyświetlamy
header("Content-type: image/png");
imagepng($img);
// czyścimy
imagedestroy($img);
imagechar(grafika_źródłowa, int rozmiar_czcionki, int x, int y, string ZNAK, int kolor) - rysuje znak na grafice. Rozmiar czcionki od 1 do 5. imagecharup robi to samo tyle że rysuje znaki w pionie.
<?php
$im = imagecreatetruecolor(100, 100);
$string = 'A';
$bg = imagecolorallocate($im, 255, 255, 255);
$zielony = imagecolorallocate($im, 0, 255, 0);
imagechar($im, 5, 0, 0, $string, $zielony);
header('Content-type: image/png');
imagepng($im);
int imagecolorallocate ( grafika_źródłowa, int czerwony, int zielony, int niebieski ) - tworzy identyfikator koloru, który można wykorzystywać w innych funkcjach. Kolor określamy podając składowe RGB - czerwony/zielony/niebieski.
imagecreate ( int x_size, int y_size ) - zwraca identyfikator do pustego obrazu o rozmiarach x/y. Tworzymy obraz a następnie nanosimy tekst:
<?php
header("Content-type: image/png");
$im = @imagecreate(200, 50)
or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 255, 255, 255);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 4, 5, 5, "Lancuch :)", $text_color);
imagepng($im);
imagedestroy($im);
<?php
header("Content-type: image/png");
$im = @imagecreatefrompng('kot.png')
or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 255, 255, 255);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 4, 5, 5, "Lancuch :)", $text_color);
imagepng($im);
imagedestroy($im);
imagerotate(identyfikator obrazu, kąt, kolor_tła) - obraca obraz o podany kąt.
<?php
// plik i rotacja
$filename = 'kot.png';
$degrees = 180;
// typ
header('Content-type: image/png');
// tworzymy identyfikator
$source = imagecreatefrompng($filename);
// obracamy
$rotate = imagerotate($source, $degrees, 0);
// wyświetlamy
imagepng($rotate);
RkBlog
Comment article