GD ile Tuval Üzerine Çizgiler ve Yazılar
Posted: Mart 15, 2011 at 4:47 pm
Bir önceki dersimizde PHP GD kütüphanesini kullanarak tuvalimizi hazırlamış ve temel yapıyı öğrenmiştik. Bu dersimizde tuvalimizin üzerinde çizgiler çizmeyi ve yazılar yazmayı öğreneceğiz.
Baştan belirtmeliyim ki bu yaptığımız uygulamalar basit düzeyde fonksiyonları tanımamız ve etkin bir şekilde kullanabilmemiz içindir. Bu nedenle aklınıza “böyle bir şeye nerede ihtiyaç duyayım ki?” gelmesin. Bilakis daha öncede belirttiğim gibi bu konu ileri düzey PHP alanında olup talep azda olsa istatistikler, butonların üzerine yazı yazdırmak, insan kontrolü için şifreler üretmek gibi farklı alanlarlarda ihtiyaç doğabiliyor.
Önce bunun için temel iki fonksiyonumuzu öğrenelim;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php header('Content-type: image/png'); // bu sayfanın çıktısının png olduğunu bildirdik $width = 800; // genişlik değeri $height = 500; // uzunluk değeri $im = imagecreatetruecolor($width,$height); // tuvali hazırla //$color dizisine renk atamaları $color['black'] = imagecolorallocate($im, 0, 0, 0); $color['red'] = imagecolorallocate($im, 255, 0, 0); $color['green'] = imagecolorallocate($im, 0, 255, 0); $color['blue'] = imagecolorallocate($im, 0, 0, 255); $color['white'] = imagecolorallocate($im, 255, 255, 255); imagefill($im, 0, 0, $color['black']); // tuvali siyah renkle doldurduk imageline($im, 0, 0, $width, $height, $color['blue']); // çizgimizi çizdik imagestring($im, 5, 340, 230, 'Aslan Akali', $color['red']); // yazımızı yazdık imagepng($im); // tuvali png formatında göster imagedestroy($im); // belleği temizle ?> |
En anlaşılır haliyle yazmaya çalıştık şimdi kodları açıklayalım. Önceki derste anlattığım kısımları tekrarlamayacağım.
imagecolorallocate() fonksiyonu
imagecolorallocate() bizim renk seçici fonksiyonumuzdur. Yukarıda $color dizisine renk atamaları yaparak başladık ki bunları çizgilerde ve yazılarda kullanabilelim.
Fonksiyonumuz 4 değer alıyor;
1. değer : $im daha önceki dersten bildiğiniz gibi işlem akış numaramızdır.
2. değer : r,g,b sıralamasında ki r yani red(kırmızı) tonu
3. değer : r,g,b sıralamasında ki g yani green(yeşil) tonu
4. değer : r,g,b sıralamasında ki b yani green(blue) tonu
r,g,b alanları 0-255 arası değer alır. 0 siyaha doğrudur, 255 rengin tonunu arttırır.
$color dizisine siyah, kırmızı, yeşil gibi renkler atamış olduk..
imagefill() fonksiyonu
imagefill() fonksiyonu tuvalimize arkaplan rengi atamamızı sağlar.
Fonksiyon 4 değer alır;
1. değer : işlem akış numarası
2. değer : X koordinatında yani sağ-sol düzleminde soldan itibaren rengin başlayacağı koordinat
3. değer : Y koordinatında yani yukarı-aşağı düzlemde yukarıdan rengin başlayacağı koordinat
4. değer : imagecolorallocate ile belirlediğimiz renklerden birini atadık.
imageline() fonksiyonu
imageline() fonksiyonu belirlediğimiz koordinatlar arasında çizgi çizmemizi sağlar. Koordinat yapısını grafik üzerinde hatırlayalım ve bunu kodlama yaparken aklımızda canlandıralım;

Tuvalimiz böyle bir X-Y koordinat düzlemi üzerindedir ve bir çizginin ve ya yazının vb. materyallerin X ve Y başlangıç-bitiş konumlarını belirterek yerleştirmemiz mümkün olmaktadır.
imageline() fonksiyonumuz 6 değer almaktadır;
1. değer : işlem akış numarası
2. değer : başlangıç noktasının X koordinatında ki yeri : 0
3. değer : başlangıç noktasının Y koordinatında ki yeri : 0
4. değer : bitiş noktasının X koordinatında ki yeri : $width = 800
5. değer : bitiş noktasının Y koordinatında ki yeri : $height = 500
6. değer : çizginin rengi
imagestring() fonksiyonu
Bu fonksiyon tuvalin herhangi bir bölgesine bir yazı eklememizi sağlar.
imagestring() fonksiyonu 6 değer alır;
1. değer : işlem akış numarası
2. değer : bu fonksiyona tanımlı 5 font büyüklüğünden 5.dir. 1-5 arası rakamlar verilir.
3. değer : X koordinatında yazının bulunacağı yer $width – 100 = 400
4. değer : Y koordinatında yazının bulunacağı yer $height – 25 = 275
5. değer : yazacağımız yazı
6. değer : yazımızın rengi
Sonuç
Sonuç olarak GD kütüphanesi ile bir tuval üzerinde renk tonlarını ayarlayıp yazı yazmayı ve çizgi çizmeyi öğrendik. Bir daha ki dersimizde bu konuyu biraz daha sofistike hale getireceğiz inşaAllah…

PHP Programlama Uzmanı Aslan Akali