GD kütüphanesi içerisinde yer alan PHP resim fonksiyonları ile resim işlemleri kolaylıkla yapılabilmekte. Tuval oluşturma, resim dahil etme ve resim üzerinde işlemler yapabilme, yeniden boyutlandırma, kırpma, kopyalama, resim üzerinde filtreler kullanma, resmin üzerine yazı yazma tarzında PHP üzerinde resim işlemleri yapılabilmekte ve bu işlemler ile PHP güvenlik kodu oluşturma veya PHP’de resim düzenleme uygulamaları oluşturulabilmekte. PHP GD kütüphanesi içerisinde bulunan fonksiyonların tamamını görmek için tıklayın.
Bu yazı da bu resim fonksiyonları ile ayrı başlıklar altında sade ve anlaşılır bir şekilde kodlamalı örnekler üzerinden anlatılıp, sonuçlarını resimli bir şekilde göstereceğim. Ayrıca yazının en altında anlatılan örneklerin kodlarının tamamını çalışır bir bütün halinde indirebilirsiniz.
Bu yazıda paylaştığım PHP resim fonksiyonları listesi aşağıdaki gibidir. Başlıklara tıklayarak ilgili başlığa kolayca ulaşabilirsiniz.
–>imagecreate fonksiyonu boş resim (tuval) oluşturma
–>imagejpeg fonksiyonu
–>imagecolorallocate fonksiyonu ile renk tanımlama
–>imagefill fonksiyonu ile resim boyama – renk ile doldurma
–>imagestring fonksiyonu ile resmin üzerine yazı yazma
–>imagettftext fonksiyonu ile resim üzerine font biçiminde yazı yazma
–>imageline ile resim üzerine çizgi çizme
–>imagedashedline fonksiyonu ile kesik çizgi çizme
–>imagearc fonksiyonu ile yay çizme
–>imagefilledellipse fonksiyonu ile elips çizme
–>imagefilledrectangle fonksiyonu ile dörtgen çizme
–>imagecolortransparent fonksiyonu ile seçilen rengi transparan haline getirme
–>imagecreatefrompng fonksiyonu ile png uzantılı resmi ekleme
–>imagecopy fonksiyonu ile resmin kopyasını alma
–>imagecopymerge fonksiyonu ile resmin kopyasını alma ve başka resme aktarma
–>imagecopyresampled fonksiyonu ile resim yeniden boyutlandırma
–>imagefilter fonksiyonu ile resim filtreleme işlemleri
Resim işlemlerinin yapıldığı php dosyasının sonuç çıktısının resim olmasını sağlamak için sayfa tipinin ayarlanması gerekmektedir. Aşağıdaki fonksiyon ile sayfanın uzantısı png olan bir resim dosyası olduğunu belirtiyoruz.
header("Content-type:image/png"); //dosyanın türünü .png uzantılı resim olduğunu belirtiyoruz
Resim işlemleri yapılabilmesi için üzerinde çalışılabilecek bir resmin olması yada boş bir tuvalin bulunması gerekmektedir. PHP Resim fonksiyonları içerisinde yer alan imagecreate fonksiyonu ile hafızada genişliği ve yüksekliği belirtilen boş bir resim oluşturulması sağlanır.
$resim = ImageCreate($width, $height); // 150x50 boyutunda bir tuval, kalıp oluştur
Fonksiyondan geriye resmi temsil eden değer dönmekte ve bu değeri değişken içerisine aktarıyoruz. Bu değişken kullanılarak resim üzerinde işlemler yapılabilecek. Ayrıca boş bir resim oluşturmak için imagecreatetruecolor fonksiyonu da kullanılabilir.
$resim = imagecreatetruecolor($width, $height);
Peki imagecreate fonksiyonu ile imagecreatetruecolor fonksiyonu arasındaki fark nedir? Imagecreatetruecolor fonksiyonu çok daha fazla renk barındırabilmekte. Imagecreate fonksiyonu ile oluşturulan tuvalde resim işlemleri yapılırken görüntü bozulabilmekte ve renklerin kalitesi düşebilmektedir. Imagecreatetruecolor fonksiyonu ile bu sorunun önüne geçilir. Görüntü kaygısı taşımayan basit işlemlerde imagecreate fonksiyonu kullanılması tavsiye edilir ancak daha gelişmiş uygulamalar yapılacaksa ve görüntü kalitesine önem veriliyor ise imagecreatetruecolor fonksiyonu kullanılması gerekir.
Resim oluşturma, resim üzerinde işlemler yapılması ve yeni resmin tamamlanması sonrası hafızadan silinmesi ve sunucuya yük olmamasının sağlanması gerekir. Resmi ve işlemleri hafızadan silmek için imagedestroy fonksiyonu kullanılmalıdır.
ImageDestroy($resim); //hafızadan sil
Imagejpg fonksiyonu, işlenen resmi jpg formatında oluşturur ve tarayıcıya yada belirtilen dosyaya çıktı vermeyi, yazdırmayı sağlar. PHP imagejpg fonksiyonu kullanımı aşağıdaki gibidir.
Imagejpeg($resim); //belirtilen resim değerini jpg türünde oluşturur ve tarayıcıya çıktılar
İkinci parametre kullanılır ise belirtilen dizin içerisine oluşturulan resmi kaydeder. Varsayılan olarak null değeri atanmıştır, kullanılması zorunlu değildir.
Imagejpeg($resim,'2.png'); //belirtilen resim değerini jpg türünde oluşturur ve belirtilen adrese resmi kaydeder
Üçüncü parametre kullanılır ise resmin kalitesi belirtilir. 0-100 arası değer verilebilir.
Imagejpeg($resim,null,90); //belirtilen resim değerini jpg türünde oluşturur ve 90% oranında kaliteli olması sağlanır.
Imagepng fonksiyonu ve imagegif fonksiyonu kullanımı da tamamen aynıdır. Sadece kaydedilen resim dosyasının uzantısını belirtirler. Transparant tarzı işlemlerde sonuçların eksiksiz çıkması için imagejpeg fonksiyonu haricinde imagepng fonksiyonu veya imagegif fonksiyonu kullanılması tavsiye edilir.
Imagecolorallocate fonksiyonu içerisine parametre olarak girilen rgb (red, green, blue) renk kodları üzerinden renk oluşturulmasını sağlar. Oluşturulan bu renk ile resim üzerine yazılan yazılar yada çizilen şekillerin renklendirilmesi sağlanır. 4 parametre ile kullanılır. İlk parametre resmin tanımlandığı değişken değeri, ikinci parametre rgb renk modunu oluşturan kırmızı rengin kodu, üçüncü parametre yeşil rengin kodu, dördüncü parametre ise mavi rengin kodu. PHP imagecolorallocate fonksiyonu kullanımı sonucunda aşağıdaki gibi renkler oluşturulabilir.
$beyaz = ImageColorAllocate($resim, 255, 255, 255); //beyaz renk oluştur
$sari = ImageColorAllocate($resim, 255, 255, 0); //sarı renk oluştur
$kirmizi = ImageColorAllocate($resim, 139, 0, 0); //kırmızı renk oluştur
$siyah = ImageColorAllocate($resim, 0, 0, 0); //siyah renk oluştur
İnternet üzerinden rgb oluşturma uygulamaları üzerinden rahatlıkla renk seçip, rgb kodunu bulabilir, uygulamalarınız üzerinde kullanabilirsiniz.
Imagefill fonksiyonu ile resmin belirtilen konumundan başlayarak tamamen renk ile boyanmasını sağlar. Aşağıdaki örnekte belirtilen resmin soldan 0, yukarıdan 0 piksel uzaklıktan itibaren başlayacak şekilde siyah renk ile doldurulması işlemi gerçekleştiriliyor.
ImageFill($resim, 0, 0, $siyah); //tuvali siyaha boya
Imagestring fonksiyonu resmin üzerine yazmak için kullanılan GD fonksiyonlarından biridir. Belirtilen koordinatlara, belirtilen boyutta ve renkte resim üzerine yazı yazılmasını sağlar. PHP imagestring fonksiyonu kullanımı aşağıdaki gibidir.
ImageString($resim, 5, 50, 16, 'YAMAN1234', $beyaz); //resime belirtilen konumda, belirtilen boyutta beyaz renkli olarak yazı yaz
Yukarıdaki örnekte, resmin üzerine boyutu 5 olarak tanımlanmış. 0-5 arası yazı boyutu için değer girilebilir. Resmin üzerine soldan 50, yukarıdan 16 piksel uzaklıktan itibaren beyaz renkli olarak ‘YAMAN1234’ yazısının yazılması sağlanıyor. Imagestring fonksiyonu örnek içerisinde kullanımı aşağıdaki gibidir.
header("Content-type:image/png"); //dosyanın türünü .png uzantılı resim olduğunu belirtiyoruz
$resim = ImageCreate(200, 50); // 200x50 boyutunda bir tuval, kalıp oluştur
$beyaz = ImageColorAllocate($resim, 255, 255, 255); //beyaz renk oluştur
$siyah = ImageColorAllocate($resim, 0, 0, 0); //siyah renk oluştur
ImageFill($resim, 0, 0, $siyah); //tuvali siyaha boya
ImageString($resim, 5, 50, 16, 'YAMAN1234', $beyaz); //resime belirtilen konumda, belirtilen boyutta beyaz renkli olarak yazı yaz
Imagepng($resim); //belirtilen resim değerini png türünde oluşturur ve tarayıcıya çıktılar
ImageDestroy($resim); //hafızadan sil
Uygulamanın sonucu ise aşağıdaki gibidir.
PHP resim fonksiyonları içerisinde yer alan imagettftext fonksiyonu belirtilen font ile resmin üzerine yazı yazmak için kullanılan resim fonksiyonudur. Resmin üzerine yazılacak yazının açısal ayarı yapılarak, font büyüklüğü belirtilerek resim üzerinde belirtilen konuma belirtilen renk ve yazı stili ile yazı yazılması sağlanır. Açı değeri yükseltikçe yazı sağdan itibaren yukarı doğru konumlanmaya başlar. 90 derecelik bir açı tanımlanır ise dikey bir yazı yazılması sağlanır. PHP imagettftext fonksiyonu kullanımı aşağıdaki gibidir.
imagettftext($resim, 20, 0, 10, 30, $beyaz, "arturo_regular.ttf", "MYaman");
Yukarıdaki örnekte, resmin üzerine boyutu 20 olarak tanımlanmış, açı değeri 0 girilerek yazının soldan sağa doğru olacak şekilde yatay yazılacağı belirtilmiş, soldan 10, yukarıdan 30 piksel uzaklıktan itibaren yazının beyaz renkli olacak şekilde font stili “arturo_regular” olan bir “MYaman” yazısının yazılması sağlanıyor. Imagettftext fonksiyonu örnek içerisinde kullanımı aşağıdaki gibidir.
header("Content-type:image/png"); //dosyanın türünü .png uzantılı resim olduğunu belirtiyoruz
$resim = ImageCreate(200, 40); // 200x40 boyutunda bir tuval, kalıp oluştur
$beyaz = ImageColorAllocate($resim, 255, 255, 255); //beyaz renk oluştur
$siyah = ImageColorAllocate($resim, 0, 0, 0); //siyah renk oluştur
ImageFill($resim, 0, 0, $siyah); //tuvali siyaha boya
imagettftext($resim, 20, 0, 10, 30, $beyaz, "arturo_regular.ttf", "MYaman");
Imagepng($resim); //belirtilen resim değerini png türünde oluşturur ve tarayıcıya çıktılar
ImageDestroy($resim); //hafızadan sil
Uygulamanın sonucu aşağıdaki gibidir.
Imageline fonksiyonu ile resim üzerine çizgi çekme işlemi gerçekleştirilir. Yatay, dikey, çapraz şekilde resim üzerine çizgi çizilebilir. Parametre olarak girilen x ve y değerleri ile çizginin bir tarafının konumu ile diğer tarafının konumuna bağlı olarak yatay, dikey veya çapraz çizgiler çizilebilir. PHP imageline fonksiyonu kullanımı aşağıdaki gibidir.
ImageLine($resim, 0, 20, 200, 20, $sari);
Yukarıdaki örnekteki gibi çizginin bir tarafının soldan 0, yukarıdan 20 piksel uzaklıktan itibaren çizilmeye başlayacağını, diğer tarafının da soldan 200, yukarıdan 20 piksel uzaklıktan itibaren çizilmeye başlayacağını varsayarsak tuvalin en üstünde yukarıdan 20 piksel uzaklıkta olacak şekilde en soldan itibaren sağa doğru 200 piksel boyunca bir çizginin olduğunu görürüz. Bu örneğin imageline fonksiyonu kullanımı ile birlikte yapımı aşağıdaki gibidir.
header("Content-type:image/png"); //dosyanın türünü .png uzantılı resim olduğunu belirtiyoruz
$resim = ImageCreate(250, 50); // 150x50 boyutunda bir tuval, kalıp oluştur
$sari = ImageColorAllocate($resim, 255, 255, 0); //sarı renk oluştur
$siyah = ImageColorAllocate($resim, 0, 0, 0); //siyah renk oluştur
ImageFill($resim, 0, 0, $siyah); //tuvali siyaha boya
imagesetthickness($resim,2); //çizgi kalınlığını ayarlama
ImageLine($resim, 0, 20, 200, 20, $sari); //tuvale belirtilen konumda sarı çizgi çiz
Imagepng($resim); //belirtilen resim değerini png türünde oluşturur ve tarayıcıya çıktılar
ImageDestroy($resim); //hafızadan sil
Yukarıdaki örnekte görüldüğü gibi imagesetthickness fonksiyonu da kullanıldı. Kullanılması zorunlu değil ancak imagesetthickness fonksiyonu kullanılır ise resim üzerine çizilen çizgilerin kalınlıklarının ayarlanması sağlanır. Imageline fonksiyonundan önce tanımlanması gerekir.
Uygulamanın sonucu aşağıdaki gibidir.
imagedashedline fonksiyonu PHP kesikli çizgi çizme işlemini gerçekleştirir. Imageline fonksiyonu aralarında boşluk olmadan resim üzerinde çizgi çizme işlemini gerçekleştirirken imagedashedline fonksiyonu ise çizilen çizginin aralarının boşluklu olmasını sağlar. PHP imagedashedline fonksiyonu kullanımı aşağıdaki gibidir.
imagedashedline($resim, 40, 45, 40, 95, $sari);
Yukarıdaki örnekte, çizginin
başlangıç noktası soldan 40, yukarıdan 45 piksel uzaklıktan
itibaren başlayacağını, bitiş noktası ise soldan 40, yukarıdan
95 piksel uzaklıkta sonlanacağı belirtiliyor. Bu demektir ki
yukarıdan aşağıya 50 piksel uzunluğunda kesikli bir çizgi
çizilmiş olacak.
Ancak dikey olarak kesikli çizgi çizme işlemi kolaylıkla yapılırken yatay kesikli çizgi çizilemiyor, çizgiyi yatay ivmeye doğru çevirmesi de epey zor. Bu yüzden imagesetstyle fonksiyonu ile çizgi tipini kesikli çizgi olarak değiştirip, imageline fonksiyonu ile kesikli çizgi çizme işlemi aşağıdaki örnekteki gibi yapılabir.
header("Content-type:image/png"); //dosyanın türünü .png uzantılı resim olduğunu belirtiyoruz
$resim = ImageCreate(200, 60); // 150x50 boyutunda bir tuval, kalıp oluştur
$sari = ImageColorAllocate($resim, 255, 255, 0); //sarı renk oluştur
$siyah = ImageColorAllocate($resim, 0, 0, 0); //siyah renk oluştur
ImageFill($resim, 0, 0, $siyah); //tuvali siyaha boya
imagesetthickness($resim,2); //çizgi kalınlığını ayarlama
$style = Array(
$sari,
$sari,
$sari,
$sari,
IMG_COLOR_TRANSPARENT,
IMG_COLOR_TRANSPARENT,
IMG_COLOR_TRANSPARENT,
IMG_COLOR_TRANSPARENT
);
imagesetstyle($resim, $style);
imageline($resim, 0, 30, 200, 30, IMG_COLOR_STYLED);
Imagepng($resim); //belirtilen resim değerini png türünde oluşturur ve tarayıcıya çıktılar
ImageDestroy($resim); //hafızadan sil
Uygulamanın sonucu aşağıdaki gibidir.
Imagearc fonksiyonu ile yay çizme işlemi gerçekleştirilebilir. Verilen konum ve büyüklük ayarları doğrultusunda resim üzerine çember çizilir. PHP imagearc fonksiyonu kullanımı aşağıdaki gibidir.
imagearc($resim,15, 15, 15, 15, 0, 360, $sari);
Yukarıdaki örnekte, resim üzerine
yayın merkezinin soldan 15, yukarıdan 15 piksel uzaklığında,
genişliği 15, yüksekliği 15 piksel olacak şekilde 0 dereceden
başlayarak 360 dereceye kadar saat yönünde sarı renkli tam bir
yay çizilmesi sağlanır. Yani açısal ayarlamalar doğrultusunda
tam bir yay çizilebildiği gibi yarım yay da çizilebilir.
Imagearc fonksiyonunun bir örnek içerisinde kullanımı aşağıdaki gibidir.
header("Content-type:image/png"); //dosyanın türünü .png uzantılı resim olduğunu belirtiyoruz
$resim = ImageCreate(200, 100); // 150x50 boyutunda bir tuval, kalıp oluştur
$sari = ImageColorAllocate($resim, 255, 255, 0); //sarı renk oluştur
$siyah = ImageColorAllocate($resim, 0, 0, 0); //siyah renk oluştur
ImageFill($resim, 0, 0, $siyah); //tuvali siyaha boya
imagesetthickness($resim,2); //çizgi kalınlığını ayarlama
imagearc($resim,75, 45, 45, 45, 0, 360, $sari); //yay oluşturur
Imagepng($resim); //belirtilen resim değerini png türünde oluşturur ve tarayıcıya çıktılar
ImageDestroy($resim); //hafızadan sil
Uygulamanın sonucu aşağıdaki gibidir.
Imagefilledelipse fonksiyonu ile resim üzerine içi dolu elips çizilmesi sağlanır. Verilen konum ve büyüklük ayarları doğrultusunda resim üzerine elips çizilir. PHP imagefilledelipse fonksiyonu kullanımı aşağıdaki gibidir.
imagefilledellipse($resim,75, 45, 45, 45, $sari);
Yukarıdaki örnekte, resim üzerine elips merkezinin soldan 75, yukarıdan 45 piksel uzaklığında, genişliği 45, yüksekliği 45 piksel olacak şekilde sarı içi dolu bir elips çizme işlemi gerçekleştirilir. Imagefilledelipse fonksiyonunun örnek içerisinde kullanımı aşağıdaki gibidir.
header("Content-type:image/png"); //dosyanın türünü .png uzantılı resim olduğunu belirtiyoruz
$resim = ImageCreate(200, 100); // 150x50 boyutunda bir tuval, kalıp oluştur
$sari = ImageColorAllocate($resim, 255, 255, 0); //sarı renk oluştur
$siyah = ImageColorAllocate($resim, 0, 0, 0); //siyah renk oluştur
ImageFill($resim, 0, 0, $siyah); //tuvali siyaha boya
imagesetthickness($resim,2); //çizgi kalınlığını ayarlama
imagefilledellipse($resim,75, 45, 45, 45, $sari); //elips oluşturur
Imagepng($resim); //belirtilen resim değerini png türünde oluşturur ve tarayıcıya çıktılar
ImageDestroy($resim); //hafızadan sil
Uygulamanın sonucu aşağıdaki gibidir.
Imagefilledrectangle fonksiyonu ile resmin üzerine belirtilen konum ve büyüklükte içi dolu dörtgen çizilmesi sağlanır. PHP imagefilledrectangle fonksiyonu kullanımı aşağıdaki gibidir.
imagefilledrectangle($resim, 50, 30, 90, 70,$kirmizi);
Yukarıdaki örnekte, resmin üzerine dörtgenin bir tarafının soldan 50, yukarıdan 30 piksel uzaklıktan itibaren çizilmeye başlayacağını, soldan 90, yukarıdan 70 piksel uzaklığına kadar çizilmesi sağlanır. Böylelikle 40 piksel genişliğinde ve yüksekliğinde kare çizilecektir. Imagefilledrectangle fonksiyonunun örnek içerisinde kullanımı aşağıdaki gibidir.
header("Content-type:image/png"); //dosyanın türünü .png uzantılı resim olduğunu belirtiyoruz
$resim = ImageCreate(200, 100); // 150x50 boyutunda bir tuval, kalıp oluştur
$kirmizi = ImageColorAllocate($resim, 139, 0, 0); //kırmızı renk oluştur
$siyah = ImageColorAllocate($resim, 0, 0, 0); //siyah renk oluştur
ImageFill($resim, 0, 0, $siyah); //tuvali siyaha boya
imagesetthickness($resim,2); //çizgi kalınlığını ayarlama
imagefilledrectangle($resim, 50, 30, 90, 70,$kirmizi); //kare oluşturur
Imagepng($resim); //belirtilen resim değerini png türünde oluşturur ve tarayıcıya çıktılar
ImageDestroy($resim); //hafızadan sil
Uygulamanın sonucu aşağıdaki gibidir.
Imagecolortransparent fonksiyonu, resim üzerinde seçilen rengi transparan, görünmez haline getirme işlemini gerçekleştirir. Belirtilen renklerle oluşturulan elemanların bulunduğu bölgeleri transparan haline getirir. Imagecolortransparent fonksiyonu örnek içerisindeki kullanımı aşağıdaki gibidir.
imagecolortransparent($resim, $sari); //tuvalde seçilen rengin bulunduğu bölgeleri transparan hale getirir
Imagecreatefrompng fonksiyonu, projeye resim eklenmesini sağlar. Parametre olarak girilen adreste bulunan png uzantılı resmi php içerisine ekleme işlemi gerçekleştirilir. Imagecreate veya imagecreatetruecolor fonksiyonu ile boş bir resim oluştururken imagecreatefrompng fonksiyonu ise belirtilen adreste bulunan resim dosyası üzerinden resim oluşturur. PHP imagecreatefrompng fonksiyonu kullanımı aşağıdaki gibidir.
$resim = imagecreatefrompng('resim.png');
Fonksiyondan resmi temsil eden değeri resim değişkenine aktarılıyor. Bu değişken üzerinden resim üzerinde değişiklikler yapılabilecektir. Aynı şekilde imagecreatefromjpeg fonksiyonu da jpg uzantılı resim üzerinden proje içerisinde resim oluşturur. Imagecreatefromgif fonksiyonu da gif uzantılı resmi projeye dahil etme işlemini gerçekleştirir.
PHP resim fonksiyonları içerisinde yer alan imagecopy fonksiyonu ile resim üzerinde belirtilen konumlar arasından kopya alınmasını sağlar ve alınan kopyayı belirtilen resim üzerine aktarır. Bu resim boş bir tuval olabilir ya da uygulamaya dahil edilen herhangi bir resim olabilir. Aslında PHP resim kopyalama ve resim kırpma işlemi imagecopy fonksiyonu ile yapılmış oluyor. Örnek üzerinde PHP imagecopy fonksiyonu kullanımı aşağıdaki gibidir.
header("Content-type:image/png"); //dosyanın türünü .png uzantılı image olarak belirtiyoruz
$resim = imagecreatefrompng('kagura.png');
$tuval = imagecreatetruecolor(300, 170);
imagecopy($tuval, $resim, 0, 0, 400, 150, 300, 170);
ImagePng($tuval);
imagedestroy($tuval);
imagedestroy($resim);
Yukarıdaki örnekte, genişliği 300, yüksekliği 170 olan boş bir tuval oluşturuldu. imagecopy fonksiyonu ile tuvale soldan 0, yukarıdan 0 piksel uzaklıktan itibaren kopyalama işlemi başlatılacak. Soldan 400, yukarıdan 150 piksel uzaklıktan itibaren resimden kopya alınacak ve alınan bu kopya tuval üzerine aktarılacak. Kopyalanacak alanın genişliği 300, yüksekliği 170 piksel olacak. Kopyayı taşıyan tuval ise png uzantılı resim olarak kaydedilecek. Bu işlemler sonucunda projeye dahil edilen resim ve tuvalin verileri bellekten silinecek.
Yukarıdaki resimden kopyalanan parça ile aşağıdaki resim oluşturuluyor.
Imagecopymerge fonksiyonu, belirtilen resim üzerinden kopya alınarak başka bir resmin belirtilen konumuna saydamlık değeri verilerek eklenmesini sağlar. Örnek içerisinde PHP imagecopymerge fonksiyonu kullanımı aşağıdaki gibidir.
header("Content-type:image/png"); //dosyanın türünü .png uzantılı image olarak belirtiyoruz
$resim2 = imagecreatefrompng('resim.png'); //Bir dosya veya URL'den yeni bir resim oluşturur.
$resim = imagecreatefrompng('resim2.png');
imagecopymerge($resim, $resim2, 0, 0, 400, 150, 300, 170, 60);
ImagePng($resim);
imagedestroy($resim);
imagedestroy($resim);
Yukarıdaki örnekte, birinci
parametrede tanımlı olan resme, ikinci parametredeki resim
karıştırılacak, eklenecek. Imagecopymerge fonksiyonu ile birinci
parametredeki resme soldan 0, yukarıdan 0 piksel uzaklıktan
itibaren ikinci resmi ekleme, karıştırma işlemi başlatılacak.
Soldan 400, yukarıdan 150 piksel uzaklıktan itibaren resimden
ekleme yapılacak. Eklenecek alanın genişliği 300, yüksekliği
170 piksel olacak. Sonuncu parametrede tanımlanan değer ise
karıştırılacak resmin saydamlık değeri.
Uygulamanın sonucu aşağıdaki gibidir.
Imagecopyresampled fonksiyonu ile resimleri orantılı ve kaliteli olarak boyutlandırma işlemi yapılır. Resim üzerinde belirtilen konumlar arasındaki bölgeyi kopyalar ve kopyalanan resmi yeniden boyutlandırma işlemine tabii tutar. Resmin tamamı seçilerek bütün resmi boyutlandırma işlemi yapılabilir. PHP imagecopyresampled fonksiyonu kullanımı aşağıdaki gibidir.
header("Content-type:image/png"); //dosyanın türünü .png uzantılı image olarak belirtiyoruz
$resim = imagecreatefrompng('resim3.png');
$tuval = imagecreatetruecolor(305, 300);
imagecopyresampled($tuval, $resim, 0, 0, 0, 0, 305, 300, 655, 651);
ImagePng($tuval);
imagedestroy($tuval);
imagedestroy($resim);
Genişliği 305, yüksekliği 300 olan bir tuval oluşturuldu. imagecopyresampled fonksiyonu ile tuvale soldan 0, yukarıdan 0 piksel uzaklıktan itibaren kopyalama işlemi başlatılacak. Soldan 0, yukarıdan 0 piksel uzaklıktan itibaren resimden kopya alınacak. Resim 305 piksel genişliğinde, 300 piksel genişliğinde olacak şekilde boyutlandırılacak. Benim boyutlandırdığım resim 655×651 boyutlarında. Bu yüzden resmin tamamını etkileyecek şekilde kopyalama için genişliği 655, yüksekliği 651 değeri girildi.
PHP resim kopyalama ve boyutlandırma işlemi için kullanılan bir diğer fonksiyon da imagecopyresized fonksiyonu. Kullanımı ve işlevi imagecopyresampled fonksiyonu ile aynı. Ancak imagecopyresized foksiyonu ile resim boyutlandırma işlemi yapıldığında görüntü, piksel bakımından daha kötü sonuçlar üretecektir. Bu yüzden imagecopyresampled fonksiyonu kullanılması, güzel sonuçlar alınması açısından resim boyutlandırma için daha fazla tavsiye edilir. PHP imagecopyresized fonksiyonu kullanımı aşağıdaki gibidir.
imagecopyresized($tuval, $resim, 0, 0, 0, 0, 305, 300, 655, 651);
PHP’de resimler üzerinde filtreleme işlemleri imagefilter fonksiyonu ile yapılabilmektedir. Fonksiyon içerisine girilen parametreler doğrultusunda resim üzerinde filtreleme işlemi gerçekleştirir.
Imagefilter fonksiyonu filtreleri
-
IMG_FILTER_NEGATE –
Resim üzerindeki renkleri zıt renklere dönüştürür -
IMG_FILTER_GRAYSCALE –
Resmin renklerini gri tonlamalı hale dönüştürür -
IMG_FILTER_BRIGHTNESS
– Resmin parlaklık ayarını yapar. Fonksiyon içerisine sayısal
olarak üçüncü parametre girilmesi ile parlaklık derecesi
belirtilmesi gerekir. (örnek: 50) -
IMG_FILTER_CONTRAST –
Resmin kontrast – karşıtlık ayarını değiştirir. Fonksiyon
içerisine sayısal olarak üçüncü parametre girilmesi ile
karşıtlık derecesi belirtilmesi gerekir. -
IMG_FILTER_COLORIZE –
Resmin renk tonlamasını değiştirir. Sırayla üçüncü,
dördüncü, beşinci parametrelere girilen rgb kodları ile tonlama
ayarı yapılır. -
IMG_FILTER_EDGEDETECT
– Resmin kenarlarını ve renk tonlamasını değiştirir. Resim
koyu ve belirgin hatlara sahip olur. -
IMG_FILTER_EMBOSS –
Resmi kabartır, koyu ve belirgin hatlara sahip olur. -
IMG_FILTER_GAUSSIAN_BLUR
– Resmi bulanıklaştırır -
IMG_FILTER_MEAN_REMOVAL
– Resme karalama etkisi verir.
Örnek içerisinde PHP imagefilter fonksiyonu kullanımı aşağıdaki gibidir.
header("Content-type:image/png"); //dosyanın türünü .png uzantılı image olarak belirtiyoruz
$resim = imagecreatefrompng('resim.png');
imagefilter($resim, IMG_FILTER_MEAN_REMOVAL);
ImagePng($resim);
imagedestroy($resim);
GDKütüphanesiOrnekler adlı dosyayı indirerek bu makalede anlatılan örneklere ulaşabilirsiniz.