Php ve GD kütüphanesi kullanımı

Bu yazımda Php GD kütüphanesini inceleyip GD ile basit grafikler/resimler oluşturmaya deyineceğim. GD kütüphanesi default olarak gelmediyse ilk olarak bu kütüphaneyi sisteminize eklemelisiniz. Dinamik resimler oluşturmamıza imkan sağlayan bu ANSI C kütüphanesi ile jpeg,png,wbmp,xbm,gif formatında resimler oluşturabilmekteyiz. Sanıyorum önceden Gif formatında kullanılan LZW compression algoritmasının copyright sebeplerinden ötürü GD ile Gif formatı kullanılamıyordu.

Resim oluşturacığımız için tarayıcının bunu resim olarak algılamsı gerekmekte, bu yüzdende header() fonksiyonu ile default text/html olan Content-type image/png olarak değiştiriyoruz. Aksi halde GD ile oluşturulan resim browser tarafından resim olarak algılanmaz. İlk oluşturacağımız image png formatında olacak.

Php ile GD kütüphanesini kullanarak resim oluşturmak için imagecreate() fonksiyonundan yararlanıyoruz. Bu fonksiyona oluşturacağımız resmin en ve boy değerlerini parametre olarak giriyoruz ve boş bir resim oluşturmuş oluyoruz.

<?
header("Content-type:image/png");
$en=300;
$boy=300;
$resim=imagecreate($en,$boy);
?>


Yukarıdaki kodları çalıştırdığınızda muhtemelen tarayıcı farklılıklarına göre ya kırık linke sahip bir resim görüntüsü alacaksınız yada o anda kullandığınız url yazacak ve resim olup olmadığı anlaşılamayan bir çıktı alacaksınız.

GD kütüphanesi ile oluşturduğumuz resmi boyamak için ImageColorAllocate() fonksiyonundan yararlanıyoruz. Üç adet argüman alan bu fonksyiona sırası ile red,green,blue (RGB) cinsinden değerleri integer tipinde yada hexadecimal tipinde giriyoruz.

ImageColorAllocate($resim, 0,0,255); maviye denk gelmektedir.

Daha sonra ise yapmamız gereken bu ayarlar ile imagePNG() fonksiyonunu kullanarak bir png resim oluşturmak.
<?
header("Content-type:image/png");
$en=300;
$boy=300;
$resim=imagecreate($en,$boy);
$arkaplan=ImageColorAllocate($resim, 0,0,255);
imagePNG($resim);
?>


300*300 png formatında bir resim mavi arkaplan rengi ile çıktı olarak browserımıza basıldı. Bitmedi Php ve Gd ile oluşturduğumuz resimlere şekiller çizebilir ve üzerlerine yazılar yazabiliriz. Şimdi oluşturduğumuz resim üzerine bir çizgi çizelim. Bunun için GD kütüphanesinin Imageline() fonksiyonundan yararlanıcaz. fonksiyon şu şekilde parametre almaktadır.

imageline( $image, int $x1, int $y1, int $x2, int $y2, int $color );

Oluşturduğumuz 300*300 daireye beyaz çapraz bir çizgi çizelim.

$beyaz=imageallocatecolor($resim,255,255,255);
imageline($resim,0,0,300,300,$beyaz);


imageline() fonksiyonunu kullanırken x ve y koordinatlarından faydalanmaktayız. x ve y koordinatları sol üst köşeden (0,0) değerleri ile başlamaktadır. x2 ve y2 ise ilk koordinatdan x kadar sağ ve y kadar aşağıyı ifade eder. Eğer sadece üstden 10px bir yatay çizgi çizmek isteseydik imageline($resim,0,10,300,10,$beyaz); şeklinde bir tanımlama yapacaktık.
Kodlarımızın son halini toplu bir biçimde gözden geçirebilirsiniz.

<?
header("Content-type:image/png");
$en=300;
$boy=300;
$resim=imagecreate($en,$boy);
$arka=ImageColorAllocate($resim, 0,0,255);
$beyaz=ImageColorAllocate($resim,255,255,255);
imageline($resim,0,0,300,300,$beyaz);
imageline($resim,0,10,300,10,$beyaz) ;
imagePNG($resim);
imagedestroy($resim);
?>


Bu arada imagedestroy() fonksiyonu ile oluşturduğumuz resmi bellekden temizliyoruz. imageline fonksiyonunu bir döngü içerisinde kullanarak oluşturduğunuz resim üzerinde istediğiniz aralıklarda birden fazla çizgiler çizebilirsiniz.

Bu işlemden sonra gelin şimdide Php ve GD kütüphanesini kullanarak oluşturduğumuz resimlerin üzerlerine yazı yazalım.

imagestring() fonksiyonu ile oluştuğumuz resmin üzerine yazılar yazabiliriz. Fonksiyonun aldığı argümanlar şöyledir.
bool imagestring ( resource $image, int $font, int $x, int $y, string $string, int $color ) bu fonksiyonda da koordinatlar imageline() fonksiyonu gibidir. Resmin üzerinde kullanacağınız font büyüklüğü ise default olarak 1 den 5'e kadar olan değerler ile sınırlandırılmıştır.
Küçükten büyüğe doğru font büyüklüğü artmaktadır. Şimdi yukarıdan 150px aşağıya ve resmin ortasına gelecek bir yazı yazalım.

imagestring($resim,3,150,150,"webcodez.blogspot.com",$beyaz);

Burada ilk olarak $resim değişkenimizi referans olarak verdik sonra 1-5 arası olan font büyüklüğünü girdik daha sonra yazımızın ilk harfinin başlayacağı x ve y koordinatlarını girip $beyaz değişkeni ile yazımızın hangi renkte olacağını belittik.

<?
header("Content-type:image/png");
$en=300;
$boy=300;
$resim=imagecreate($en,$boy);
$arka=ImageColorAllocate($resim, 0,0,255);
$beyaz=ImageColorAllocate($resim,255,255,255);
imageline($resim,0,0,300,300,$beyaz);
imageline($resim,0,10,300,10,$beyaz) ;
imagestring($resim,2,150,150,"webcodez.blogspot.com",$beyaz);
imagePNG($resim);
imagedestroy($resim);
?>


Bu kısma kadar herşey güzel GD kütüphanesi ile png formatında bir resim oluşturduk üzerine çizgiler çizip yazımızı yazdık. Fakat bu fontun gözünüze pek hoş gelmediğinin farkındayım.
GD ile True type fontlarıda kullanabiliyoruz. İstediğimiz bir true type font ile resmimiz üzerine yazı yazmak için ImageTTFText() fonksiyonunu kullanabilirsiniz. GD kütüphanesi ile projenizde grafikler oluşturabilir yada captcha gibi güvenlik uygulamaları yapabilirsiniz.

Bu yazı sadece GD ile tanışmak ve bu kütüphanenin basit bir iki özelliğini anlatmak için yazılmıştır.

1 Yorum:

  1. Adsız

    çok güzel ve yararlı bi döküman olmuş ellerine sağlık kardeşim saolasın....

    4/30/2012  


Yorumunuzu belirtebilirsiniz