Php ile grafik (GD library) [Giriş]

Yazan: ocracy | Tarih 29 Eylül 2007 | Yorum  7 Yorum
BerbatKötüOrtaGüzelHarika 5 kez puan verildi, Ortalama: 4.40 (5 üzerinden)
Loading ... Loading ...

GD DESTEĞİ

Windows sistemlerde GD desteği için .ini dosyamızdaki ;extension_php_gd.dll satırın başındaki noktalı virgülü kaldırmamız gerekir.

Linux sistemlerde ise www.boutelll.com/gd adresinden, dosyaları indirip derlememiz gerekir.

Oluşturuyoruz

oluştururken ye bu sayfayı olarak kullancağımza dair bilgi vermemiz gerekir, bunun içinde header fonksiyonlarından yararlanıcaz.

:
  1. header("Content-type: /jpeg");

header için type olarak /jpeg kullandık, bu başlık jpeg formatında bir resim oluşturmak için png için /png kullanabiliriz.

Şimdi bir tane resim oluşturalım.

Resim alanı oluşturmak için imagecreate(); ve (Jpeg formatı için) imagejpeg();, kullandığımız belliği boşaltmak içinde imagedestroy(); fonksiyonlarını kullanıyoruz.

:
  1. header("Content-type: /jpeg");
  2.  
  3. $resim  = imagecreate(250,250); // Bu fonksiyonla resim alanımızın boyutlarını belirledik.
  4.  
  5. imagejpeg($resim); // ve burda da boyutlarını belirlediğimiz resmi oluşturduk.
  6.  
  7. imagedestroy($resim); // Burda ise Resim oluştukdan sonra bellekte yer kaplar. Bellekti kapladığımız yeri silmek için bu fonksiyonu kullandık.

NOT: Resim oluşturken renk belirlemediğimizde otomatik olarak Siyah rengini kullanır.
Bu yüzden bu kodumuzu çalıştırdığımzda 250x250 formatında siyah bir resim oluşur.
Renk kullanımı

Renk kullanmak için imagecolorallocate(); fonksiyonunu kullanıyoruz.

Kullanımı: $renk = imagecolorallocate($resim,$R,$G,$B);

NOT: Renk oluştururken RGB ( Red Green Blue ) renk sistemini kullanıcaz RGB hakkında bilgi için http://en.wikipedia.org/wiki/RGB adresini inceleyebilirsiniz.

Resmi boyamak

:
  1. header("Content-type: /jpeg");
  2.  
  3. $resim  = imagecreate(250,250);
  4.  
  5. $kirmizi = imagecolorallocate( $resim, 255,0,0 );
  6.  
  7. imagefill ( $resim,0,0,$kirmizi );
  8.  
  9. imagejpeg($resim);
  10.  
  11. imagedestroy($resim);

imagefill(); İstediğimiz koordinatı istediğimiz renge boyamak için kullanılır. Eğer komple boyamak istiyorsak 0,0 koordinatlarını veriyoruz.

Bu kodumuzun çıktısı 250x250 formatlarında kırmızı bir resim olucaktır.

Resimde obje kullanmak

Obje olarak Dikdörtgen, Daire/Elips, Çizgi, Yazı kullanımına değincez.

Dikdörtgen

Dikdörgen oluşturmak için imagefilledrectangle(); fonksiyonunu kullanıyoruz.

Kullanımı: imagefilledrectangle ( $resim, $x1,$y1,$x2,$y2,$renk );

:
  1. header("Content-type: /jpeg");
  2.  
  3. $resim  = imagecreate(250,250);
  4.  
  5. $kirmizi = imagecolorallocate( $resim, 255,0,0 );
  6.  
  7. $mor = imagecolorallocate( $resim, 100,50,100 );
  8.  
  9. imagefill ( $resim,0,0,$kirmizi );
  10.  
  11. imagefilledrectangle($resim,50,50,150,150,$mor);
  12.  
  13. imagejpeg($resim);
  14.  
  15. imagedestroy($resim);

Bu kod ile X düzleminde 50 ye 150 ve y düzleminde 50 ye 150 arasındaki kalan alan mor renginde dikdörtgen yerleştirdik.

NOT: Koordinat belirlerken matematik te bildiğimiz koordinat sistemi ile aynı mantıkla koordinat belirliyoruz.

Sağdan sola -x<------->+ x koordinati

yukarıdan aşşağıya y koordinatı ( yukarısı + aşağısı - )

Daire/Elips

Daire veya elips oluşturmak için imagefilledellipse(); fonksiyonunu kullanıyoruz.

Kullanımı: imagefilledellipse ( $resim, $x,$y,$W,$H,$renk );

$x ve $y değerleriyle oluşturacağımız elipsin merkez koordinatlarını, $W değişkeniyle elipsin eninin boyunu $H ilede Yukseklik boyunu ayarlıyoruz ( Haliyle Daire oluşturmak için $W ile $H nin eşit olması gerekir. )

300x300 formatında bir resimin tam ortasına yarıçapı 50 olan bir çember yerleştirelim.

:
  1. header("Content-type: /jpeg");
  2.  
  3. $resim  = imagecreate(300,300);
  4.  
  5. $kirmizi = imagecolorallocate( $resim, 255,0,0 );
  6.  
  7. $mor = imagecolorallocate( $resim, 100,50,100 );
  8.  
  9. imagefill ( $resim,0,0,$kirmizi );
  10.  
  11. imagefilledellipse($resim,150,150,50,50,$mor);
  12.  
  13. imagejpeg($resim);
  14.  
  15. imagedestroy($resim);

Çizgi

Çizgi (line ) oluşturmak için gerekli fonksiyon imageline();

Kullanımı: imageline ( $resim, $x1,$y1,$x2,$y2,$renk );

300x300 formatında bir resme 50.50 koordinatlarından 250.250 koordinatlarına giden bir çizgi oluşturalım.

:
  1. header("Content-type: /jpeg");
  2.  
  3. $resim  = imagecreate(300,300);
  4.  
  5. $kirmizi = imagecolorallocate( $resim, 255,0,0 );
  6.  
  7. $mor = imagecolorallocate( $resim, 100,50,100 );
  8.  
  9. imagefill ( $resim,0,0,$kirmizi );
  10.  
  11. imageline($resim,50,50,250,250,$mor);
  12.  
  13. imagejpeg($resim);
  14.  
  15. imagedestroy($resim);

Yazı

Resmimizde istediğimiz koordinata yazı yazmamız mümkündür bunun için imagestring(); fonksiyonunu kullanıyoruz.

Kullanımı: imagestring($resim,$font(int),$x,$y,"Yazı",$renk);

1. 300x300 formatında bir resme 200.200 koordinatlarından başlayan Mor renginde oCRaCy yazalım

:
  1. header("Content-type: /jpeg");
  2.  
  3. $resim  = imagecreate(300,300);
  4.  
  5. $kirmizi = imagecolorallocate( $resim, 255,0,0 );
  6.  
  7. $mor = imagecolorallocate( $resim, 100,50,100 );
  8.  
  9. imagefill ( $resim,0,0,$kirmizi );
  10.  
  11. imagestring($resim,1,200,200,"oCRaCy",$mor);
  12.  
  13. imagejpeg($resim);
  14.  
  15. imagedestroy($resim);
  16.  
  17. ?&gt;

2. imagettfbbox kullanarak istediğimiz yere yazı yazalım..

:
  1. $boyut = "25";
  2.  
  3. $yazi = "ocracy";header("Content-type: /png");
  4.  
  5. $resim = imagecreate (500,500);
  6.  
  7. $kirmizi = imagecolorallocate( $resim, 255, 0, 0 );
  8.  
  9. $beyaz = imagecolorallocate( $resim, 255, 255, 255 );
  10.  
  11. imagefill($resim,0,0,$kirmizi);
  12.  
  13. $size = imagettfbbox($boyut,0,"zombie.ttf",$yazi);
  14.  
  15. /* $size şuan bir dizi değişkeni ve içindeki veriler şöyle
  16.  
  17. Yazının
  18.  
  19. $size[0]&gt; sol alt köşesinin X koordinati
  20.  
  21. $size[1]&gt; sol alt köşesinin Y koordinati
  22.  
  23. $size[2]&gt; sağ alt köşesinin X koordinati
  24.  
  25. $size[3]&gt; sağ alt köşesinin Y koordinati
  26.  
  27. $size[4]&gt; sağ üst köşesinin X koordinati
  28.  
  29. $size[5]&gt; sağ üst köşesinin Y koordinati
  30.  
  31. $size[6]&gt; sol üst köşesinin X koordinati
  32.  
  33. $size[7]&gt; sol üst köşesinin Y koordinati
  34.  
  35. */
  36.  
  37. //Öncelikle yazımızın enini ve boyunu bulacaz
  38.  
  39. $yazi_en = abs($size[2]-$size[0]);
  40.  
  41. $yazi_boy = abs($size[3]-$size[5]);
  42.  
  43. // En için Sağ altın x koordinatından sol altın x koordinatinını çıkardık
  44.  
  45. // Boy için de sağ altın y koordinatından sağ üstün y koordinatını çıkardık
  46.  
  47. //Yazının enini ve boyunu bulduk artık istediğimz yere yerleştirebiliriz
  48.  
  49. //örneğin kenarlardan 5px boş kalcak şekilde yazımızı sağ alta yazalım.
  50.  
  51. $yazix = 500-5-$yazi_en;
  52.  
  53. $yaziy = 500-5;
  54.  
  55. imagettftext($resim,$boyut,0,$yazix,$yaziy,$beyaz,"zombie.ttf",$yazi);
  56.  
  57. // Not: imagettftext fonksiyonunda verdiğimiz x ve y koordinatları yazını sol alt koordinatlarıdır.
  58.  
  59. imagepng($resim);
  60.  
  61. imagedestroy($resim);

Daha ayrıntılı bilgi için > http://tr..net/manual/en/ref..

Çok sevdim, başkalarıyla paylaşayım:
  • Google Bookmarks
  • Facebook
  • MySpace
  • TwitThis
  • del.icio.us
  • Digg
  • Live
  • YahooMyWeb
  • Technorati
  • StumbleUpon
Yazdır Yazdır | 2,187 Görüntülenme | Kategori: PHP | Trackback  Geri İzleme
Etiketler  Etiketler: , , , ,

Benzer Yazılar


Yorum Yap


(gerekli)

(gerekli,yayınlanmaz)




XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>