GD ile Grafik Oluşturma
Grafik oluştururken Php ye bu sayfayı Grafik olarak kullancağımza dair bilgi vermemiz gerekir, bunun içinde header fonksiyonlarından yararlanıcaz.
<?
header("Content-type: image/jpeg");
?>
header("Content-type: image/jpeg");
?>
- Header için type olarak image/jpeg kullandık, bu başlık jpeg formatında bir resim oluşturmak için png için image/png kullanabiliriz.
- Şimdi bir tane resim oluşturalım.
- Ş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.
<?
header("Content-type: image/jpeg");
$resim = imagecreate(250,250); // Bu fonksiyonla resim alanımızın boyutlarını belirledik.
imagejpeg($resim); // Burda da boyutlarını belirlediğimiz resmi oluşturduk.
imagedestroy($resim); // Burda ise Resim oluştukdan sonra bellekte yer kaplar. Bellekti kapladığımız yeri silmek için bu fonksiyonu kullandık.
?>
header("Content-type: image/jpeg");
$resim = imagecreate(250,250); // Bu fonksiyonla resim alanımızın boyutlarını belirledik.
imagejpeg($resim); // Burda da boyutlarını belirlediğimiz resmi oluşturduk.
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 Php otomatik olarak Siyah rengini kullanır. Bu yüzden bu php kodumuzu çalıştırdığımzda 250×250 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 https://en.wikipedia.org/wiki/RGB adresini inceleyebilirsiniz.
Resmi boyamak:
<?
header("Content-type: image/jpeg");
$resim = imagecreate(250,250);
$kirmizi = imagecolorallocate( $resim, 255,0,0 );
imagefill ( $resim,0,0,$kirmizi );
imagejpeg($resim);
imagedestroy($resim);
?>
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ı 250×250 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 );
<?
header("Content-type: image/jpeg");
$resim = imagecreate(250,250);
$kirmizi = imagecolorallocate( $resim, 255,0,0 );
$mor = imagecolorallocate( $resim, 100,50,100 );
imagefill ( $resim,0,0,$kirmizi );
imagefilledrectangle($resim,50,50,150,150,$mor);
imagejpeg($resim);
imagedestroy($resim);
?>
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 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 );
NOT: $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. )
300×300 formatında bir resimin tam ortasına yarıçapı 50 olan bir çember yerleştirelim.
<?
header("Content-type: image/jpeg");
$resim = imagecreate(300,300);
$kirmizi = imagecolorallocate( $resim, 255,0,0 );
$mor = imagecolorallocate( $resim, 100,50,100 );
imagefill ( $resim,0,0,$kirmizi );
imagefilledellipse($resim,150,150,50,50,$mor);
imagejpeg($resim);
imagedestroy($resim);
?>
imagedestroy($resim);
?>
Çizgi :
Çizgi (line ) oluşturmak için gerekli fonksiyon imageline();
Kullanımı: imageline ( $resim, $x1,$y1,$x2,$y2,$renk );
300×300 formatında bir resme 50.50 koordinatlarından 250.250 koordinatlarına giden bir çizgi oluşturalım.
<?
header("Content-type: image/jpeg");
$resim = imagecreate(300,300);
$kirmizi = imagecolorallocate( $resim, 255,0,0 );
$mor = imagecolorallocate( $resim, 100,50,100 );
imagefill ( $resim,0,0,$kirmizi );
header("Content-type: image/jpeg");
$resim = imagecreate(300,300);
$kirmizi = imagecolorallocate( $resim, 255,0,0 );
$mor = imagecolorallocate( $resim, 100,50,100 );
imagefill ( $resim,0,0,$kirmizi );
imageline($resim,150,150,50,50,$mor);
imagejpeg($resim);
imagedestroy($resim);
?>
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);
300×300 formatında bir resme 200.200 koordinatlarından başlayan Mor renginde oCRaCy yazalım.
<?
header("Content-type: image/jpeg");
$resim = imagecreate(300,300);
$kirmizi = imagecolorallocate( $resim, 255,0,0 );
$mor = imagecolorallocate( $resim, 100,50,100 );
imagefill ( $resim,0,0,$kirmizi );
header("Content-type: image/jpeg");
$resim = imagecreate(300,300);
$kirmizi = imagecolorallocate( $resim, 255,0,0 );
$mor = imagecolorallocate( $resim, 100,50,100 );
imagefill ( $resim,0,0,$kirmizi );
imagestring($resim,1,200,200,"oCRaCy",$mor);
imagejpeg($resim);
imagedestroy($resim);
?>
imagedestroy($resim);
?>