Bu yazıda PHP nin GD kütüphanesi yardımıyla resim dosyalarına yazı ekleme, resmi kırpma, resmin kalitesiyle oynayarak optimize etme, resme filtre uygulama, resmi convert etme yöntemlerinden bahsadeceğim. SEO açısından resim sıkıştırma büyük önem arz etmekte. Resimlerde sıkıştırma ise resmin kalitesiyle oynayarak yapılmakta. Bunun nasıl yapıldığını ayrıca resme otamatik metin ekleme gibi düzenleme işlemlerinde hangi metodların kullanıldığını yazının ilerleyen bölümlerinde anlatmaya çalışacağım.
İlk olarak php.ini doyasında “extension=php_gd2.dll” eklentisinin ekli olduğunu kontrol edelim. Başındaki “;” yı kaldıralım. ve apache ye restart atalım.
<?php
$imgpath="/yol/resim.jpg";
//yolunu belirttiğimiz resmin türünü kontrol ediyoruz
if(mime_content_type($imgpath) == 'image/jpeg'){
// resim jpeg formatındaysa
$image = imagecreatefromjpeg($imgpath);
}else{
//resim png formatındaysa
$image = imagecreatefrompng($imgpath);
}
//resmi kırpıyoruz
imagecrop($image , ['x' => 0, 'y' => 0, 'width' => "150", 'height' => "150"]);
// Metin için renk belirtiyoruz
$white = imagecolorallocate($image, 255, 255, 255);
// metnin fontu
$font_path = 'font.TTF';
// resme eklenecek metin
$text = "Merhaba Dünya!";
// metni resme yazıyoruz
imagettftext($image, 25, 0, 75, 300, $white, $font_path, $text);
// resme filtre uyguluyoruz
imagefilter($image , IMG_FILTER_GRAYSCALE);
// resmi kaydediyoruz burada imagepng de kullanabiliriz
imagejpeg($image , "/yeniyol/yeniresim.jpg" , 60);
// Belleği temizliyoruz
imagedestroy($image);
?>
Php resim düzenleme
imagecreatefromjpeg metoduyla bellekğe belirtilen yoldaki resmi alıyoruz.
imagecrop resmi kırpmaya yarıyor.ikinci parametresine array olarak kırpılacak yerin x,y koordinatlarını ve boyutunu veriyoruz.
imagettftext metodu ise resme metni ekliyor.
imagefilter resme ikinci parametredeki filtreyi uygular. Bu örnekte resmi gri tona dönüştürdük.
Php resim optimizasyon
Oluşturduğumuz resim dosyasını istediğimz türde kaydedebilirz. “imagejpeg” ,”imagepng“, “imagegif” metodları ile resmi belirttiğimiz dizine kaydediyoruz. Bu metodların üçüncü parametresi kalite yüzdesidir. Resim optimizasyonu da bu parametrenin düşürülmesiyle yapılır. Ben örnekte 60 kullandım, bu resmin kalitesini yüzde 60 a düşürür. Bu değeri fazla küçültmemekte fayda var çünkü resmin kalitesi çok düşer.
array imagettftext ( resource $resim , float $boyut , float $açı , int $x , int $y , int $renk , string $yazıtipi , string $metin )
bool imagejpeg ( resource $resim [, string $dosyaismi [, int $kalite ]] )
bool imagefilter ( resource $resim , int $süzgeç [, int $d1 [, int $d2 [, int $d3 [, int $d4 ]]]] )
resource imagecrop ( resource $image , array $rect )
// imagefilter için süzgeç değerleri
IMG_FILTER_NEGATE: Resimdeki tüm renkleri zıt renge dönüştürür.
IMG_FILTER_GRAYSCALE: Resmi gri tonlamalı hale getirir.
IMG_FILTER_BRIGHTNESS: Resmin parlaklığın değiştirir. Parlaklık seviyesini belirtmek için d1 değiştirgesini kullanın.
IMG_FILTER_CONTRAST: Resmin karşıtlık seviyesini değiştirir. Karşıtlık seviyesini belirtmek için d1 değiştirgesini kullanın.