PHP
programlama dili sadece HTML sayfa çıktısı oluşturmamaktadır. JPEG, GIF, PNG
gibi farklı formatlarda resim çıktısı da oluşturabilmektedir. Bu programlama
dilinde resim işleme yapabilmek için GD kütüphanesi oluşturmak ve derlemek
gerekmektedir.
Resim
işlemleriyle değişik formatlı dosyalar (XPM, WBMP) oluşturulabildiği gibi, bu
resimler üzerinde işlem de yapılabilmektedir. Görüntü üzerine yazı yazmak, şekil
çizmek, botuyunu ayarlamak gibi birçok işlem yapılabilmektedir.
GD Yapılandırması
GD
ifadesi, PHP sunucusu üzerinde PHP programlama dilinin grafik kütüphanesinin
bulunması ve çalışabilmesi için gerekli olan grafik desteğini belirten bir
ifadedir. Bundan dolayı, PHP web server olan apache içerisine GD (Graphic Device) yapılandırması gerekecektir.
Nitekim, apache gibi bir koşullu sunucuya ihtiyaç duyan LINUX / UNIX, WINDOWS
gibi işletim sistemlerinde bu yapılandırmaya ihtiyaç duyulacaktır.
GD kurulum
ve yapılandırmasına başlamak için şu adrese göz atmak ve php_gd2.dll dosyasını
indirmek gerekmektedir.
Daha
sonra kendi makinemizde PHP sunucusu içerisinde bulunan php.ini yapılandırma dosyasını açıp aşağıdaki satırları bulmamız
gerekmektedir.
; Windows Extensions
; Note that ODBC support is
built in, so no dll is needed for it.
; Note that many DLL files
are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well
as the separate PECL DLL download (PHP 5).
; Be sure to appropriately
set the extension_dir directive.
;
Yukarıdaki
satırları bulduktan sonra bu satırların altında bulunan ;extension=php_gd2.dll ifadesi aşağıdaki şekilde değiştirilmelidir.
extension=php_gd2.dll
Yukarıdaki
değişiklik, ;extension=php_gd2.dll
ifadesinin başındaki noktalı virgül (;) yani yorum etiketini kaldırarak bu
ifadeyi aktif bir hale getirmekten ibarettir. Bu işlem ile GD kütüphanesi PHP
server için yapılandırılmış ve kullanılmaya hazır hale getirilmiştir.
Görüntü Üzerinde İşlem Yapmak
Resimler
üzerinde birçok işlem yapılabilmektedir. Resim oluşturmak, resim üzerine yazı
yazmak, şekil çizmek, boyama yapmak, arka plan için desen oluşturmak gibi türlü
işlem yapma imkanı bulunmaktadır.
Portal
sitelerde güvenlik kodu onayı için kullanılan resimler, PHP ’nin GD kütüphanesi
kullanılarak yapılan ve bütün bu özellikleri taşıyan görüntülerdir.
Daha
önce de söylediğimiz gibi, resim dosyaları üzerinde türlü işlemler
yapılabilmektedir. Bunlar yeni bir resim yaratmakla başlayan, resmi yok etmeye
kadar süren süreçte gerçekleşen işlemler olarak nitelendirilebilmektedirler.
Bir
görüntü oluşturabilmek için, belirli bir arka plan, yani tuval oluşturmak gerekmektedir.
Bunu sağlayan fonksiyon imagecreatetruecolor()
fonksiyonudur.
Şekil-1: Oluşturulmuş tuval ekran görüntüsü
Aşağıdaki
program çalıştırılıp ekran görüntüsü alındığında şekildeki görüntü
elde edilecektir.
imagecreatetruecolor()
fonksiyon kullanımı
<?php
header
('Content-type: image/png');
$goruntu
= imagecreatetruecolor(150, 150);
imagepng($goruntu);
imagedestroy($goruntu);
?>
Yukarıdaki
parametreler width(150) ve height(150) değerlerini, yani genişlik (en) ve
yükseklik değerlerini belirtmek için kullanılmaktadır.
Görüntü Yaratmak : imagecreate()
Oluşturulan
tuval için bir de resim görüntüsü yaratmak gerekecektir. Bunun için bazı
fonksiyonlara ihtiyaç duyulmaktadır. Bir resmi yaratmak için imagecreate() fonksiyonu
kullanılmaktadır. Kullanılan iki parametresi bulunmaktadır.
imagecreate() fonksiyon parametreleri
İmagecreate(genişlik[int],
yükseklik[int])
Görüntü
Oluşturmak : olustur.php
<?php
$resim
= imagecreate(250,250);
header("Content,type:
image/png");
imagepng($resim);
imagedestroy($resim);
?>
Şekil-2: Görüntü oluşturmak
Yukarıdaki
kodlar, görüntü oluşturan PHP kodlarını belirtmektedir.
Bu
programın çalıştırılması için oluşturulan görüntünün ekran çıktısı alınması
gerekmektedir.
Bunu
sağlamak için ise, HTML etiketlerinden biri olan resim çağırma etiketi,
<img> kullanılacaktır.
<img src="olustur.php">
Yukarıdaki
tek satır kod, goruntu.php dosya adı
ile kaydedildikten sonra çalıştırılıp ekran görüntüsü alınır ise, aşağıdaki
görüntü elde edilecektir.
Görüntüyü Renklendirmek :
imagecolorallocate(), imagefill()
Görüntü
tuvali ile birlikte bir görüntü oluşturmayı öğrendik. Oluşturduğumuz bu
görüntünün renkli olmasını isteyebiliriz. Bu durumda görüntü renklendirme ile
ilgili bazı fonksiyonları kullanmak gerekecektir.
Aşağıdaki
örnek, oluşturulan resim dosyasının rasgele olarak renklendirilmesini göstermektedir.
Görüntüyü
renklendirmek
<?php
$resim
= imagecreate(250,250);
$rand
= imagecolorallocate($resim, rand(0,255), rand(0,255), rand(0,255));
imageline($resim, 250, 250, 250, 250,
$rand);
header("content,type:
image/png");
imagepng($resim);
imagedestroy($resim);
?>
$rand = imagecolorallocate($resim, rand(0,255),
rand(0,255), rand(0,255));
Yukarıdaki
fonksiyon parametreleri resim ve renkleri temsil etmektedir. 3 adet renk
parametresi olmasının sebebi, RGB
(RED, GREEN, BLUE) renk uzayını temsil eden 0 ila 255 arası olan renk tonlamalarının
belirlenmesi gerekliliğidir.
Görüntü Üzerine Metin Yazmak :
imagestring()
Görüntü
üzerine metin yazma işlemi çok sık kullanılan bir yöntemdir. Sıfırdan
yaratılmış olsun, dosya yükleme işlemi ile sunucuya gönderilmiş olsun, her
türlü resim üzerinde metin yazdırma işlemi gerçekleştirilebilmektedir.
Görüntüye
metin ekleme
<?php
header
('Content-type: image/png');
$resim
= imagecreatetruecolor(250, 250);
$metin_rengi
= imagecolorallocate($resim, 55, 255, 155);
imagestring($resim,
5, 60, 125, 'Phpservisi.com',
$metin_rengi);
imagepng($resim);
imagedestroy($resim);
?>
Yukarıdaki program
çalıştırılıp ekran görüntüsü alınırsa, aşağıdaki şekil görülecektir.
Şekil-3: Görüntü’ye metin ekleme
imagestring($resim, 5, 60,
125, 'Phpservisi.com', $metin_rengi);
imagestring()
fonksiyonu çeşitli parametrelerden oluşmaktadır. Bu parametrelerin anlamları şu
şekilde tanımlanabilmektedir:
imagestring(resim, font_size, koordinat düzlemindeki sol
X konumu, koordinat düzlemindeki sol Y konumu, karakter katarı, karakter rengi)
Parametreler
içinde bulunan resim, imagecreatetruecolor() fonksiyonunun döndürdüğü resim
verisidir ve işlem yapılacak resim dosyası olarak da nitelendirilmektedir.
Görüntü Üzerine Çizim Yapmak : imageline()
Bir
resim üzerine çizim yapmak bazı durumlarda ihtiyaç duyulabilecek bir işlemdir.
Bunu gerçekleştirmek bazı zor hesaplamalar gerektirecektir. Çünkü resim
kenarları bir düzlem olarak düşünülmekte ve koordinat eksenleri olan X ve Y
konumları önem kazanmaktadır.
Görüntüye
çerçeve ve çizgi ekleme
<?php
1: //Görüntü üzerinde işlemler
2: $resim
= imagecreate(250,250);
3: $beyaz
= imagecolorallocate($resim, 255, 255, 255);
4: $siyah
= imagecolorallocate($resim, 0, 0, 0);
5: imagefill($resim, 0, 0, $beyaz);
6: imageline($resim, 0, 0, 250, 250,
$siyah);
7: imageline($resim, 250, 0, 0, 0,
$siyah);
8: imageline($resim, 250, 249, 0, 249,
$siyah);
9: imageline($resim, 0, 250, 0, 0,
$siyah);
10: imageline($resim,
249, 250, 249, 0, $siyah);
11: header("content,type:
image/png");
12: imagepng($resim);
13: imagedestroy($resim);
?>
Yukarıdaki
program çalıştırılıp ekran görüntüsü alındığında aşağıdaki görüntü elde
edilecektir.
Şekil-4: Görüntüye çizgi ve çerçeve ekleme |
Yukarıdaki
örnek detaylı inceleme sonucu daha iyi anlaşılabilecektir. 2.satır genişliği ve
yüksekliği 250 pixel olan bir görüntü oluşturmaktadır. 3. ve 4. satırlar beyaz
ve siyah renklere sahip tuval oluşturmaktadır. 5.satır imagefill() fonksiyonu yardımıyla resmi tamamen beyaz renge
boyamaktadır.
imagefill()
fonksiyon yapısı
imagefill( resim, koordinat düzleminde X konumu,
koordinat düzleminde Y konumu, renk )
6.satır,
resim üzerinde görülen çizgiyi çizmeyi sağlamaktadır.
7: imageline($resim, 250, 0, 0, 0,
$siyah);//üst çizgi
8: imageline($resim, 250, 249, 0, 249,
$siyah);//alt çizgi
9: imageline($resim, 0, 250, 0, 0,
$siyah);//sağ çizgi
10: imageline($resim, 249, 250, 249, 0, $siyah);//sol
çizgi
Yukarıdaki
satırlar, genişlik ve yükselik boyutları 250 pixel olan bir kare için çerçeve
çizmek için oluşturulmuş kodlardır.
imageline() fonksiyon yapısı
imageline(resim, ilk noktanın X konumu, ilk noktanın Y
konumu, ikinci noktanın X konumu, ikinci noktanın Y konumu, çizginin rengi)
Burada
belirtilen imageline() fonksiyon
yapısında görülen parametreler ile, yukarıdaki örnekte belirlenen çerçeve
ölçüleri karşılaştırıldığında ekran görüntüsünün nasıl oluştuğunu anlamak pek
de zor olmayacaktır.
İrdeleme
Köşesi
Görüntü
üzerine çizim yapmayı öğrendik. Fakat çizim denildiğinde akıllara sadece çizgi
gelmemektedir. Dikdörtgen, elips, çizgi ya da poligon gibi şekiller de
çizilebilmektedir.
Tablo-1 : Görüntü üzerine çizilen şekil türleri ve
fonksiyonlar
Şekil
|
Fonksiyon
|
Dikdörtgen
|
imagerectangle()
|
Çizgi
|
imageline()
|
Elips
|
imageelipse()
|
Poligon
|
imagepolygon()
|
Yay
|
imagearc()
|
Bu yazıda PHP programlama dilindeki resim çizme fonksiyonlarını örnek anlatımlarla göstermeye çalıştım. Umarım işinize yarar. Bir sonraki yazıda görüşmek üzere!
teşekkürler, çok faydalı oldu.
YanıtlaSil