PHP Resim Boyutlandırma
Genellikle kullanıcıların resim yüklediği PHP sistemlerde kullanılan resim boyutlandırma işlemi için gerekli olan resim boyutu öğrenme, resim boyutlandırma fonksiyonları, resim boyutunu ayarlama, resim boyutu değiştirme ve resim boyutunu küçültme ile ilgili bilgiler yer almaktadır.
PHP resim işlemleri için GD eklentisinin aktif edilmesi gerekmektedir.
Resim boyutu öğrenme
PHP ile resim işlemlerinde resim boyutunu öğrenmek için getimagesize fonksiyonundan faydalanılır.
Fonksiyon parametre olarak aldığı resim dosyası ile ilgili çeşitli bilgileri dizi olarak verir.
<?php
echo "<pre>";
print_r(getimagesize('ben.jpg'));
?>
Resim boyutlandırma fonksiyonları
PHP ile resim boyutunu küçültme, resim boyutu değiştirme, resim boyutu ayarlama vb. işlemler için imagecopyresampled ve imagecopyresized fonksiyonu kullanılır.
imagecopyresized – İşlemi hızlı ve yumuşatmadan düşük kalitede yapar.
imagecopyresampled – İşlemi yavaş ve yumuşatarak yüksek kalitede yapar.
Resim boyutunu değiştirme
Aşağıdaki örnek belirlenen değerlere göre JPEG, JPG formatındaki resim boyutunu değiştirmektedir.
<?php
header('Content-type: image/jpg');
$dosya = 'resim.jpg';
list($genislik, $yukseklik) = getimagesize($dosya);
$yeni_genislik = 250;
$yeni_yukseklik = 250;
$mevcut_resim = imagecreatefromjpeg($dosya);
$yeni_resim = imagecreatetruecolor($yeni_genislik, $yeni_yukseklik);
imagecopyresampled($yeni_resim, $mevcut_resim, 0, 0, 0, 0, $yeni_genislik, $yeni_yukseklik, $genislik, $yukseklik);
//imagecopyresized($yeni_resim, $mevcut_resim, 0, 0, 0, 0, $yeni_genislik, $yeni_yukseklik, $genislik, $yukseklik);
imagejpeg($yeni_resim);
//imagejpeg($yeni_resim, 'yeni_resim.jpg', 100); // oluşan resmi yeni_resim.jpg olarak %100 kalitede kaydet.
?>
Resim boyutunu ayarlama
Resim boyutlandırma sırasında yeni genişlik ve yüksekliğin doğru veya iyi verilmemesi resmin kaymasına, istenmeyen bir sonuç vermesine neden olabilir.
Bu durumda yeni resim boyutunun ayarlanması için bir oran belirlenmesi veya hesaplama yapılması faydalı olacaktır.
<?php
header('Content-type: image/jpg');
$dosya = 'ben.jpg';
$oran = 0.2;
list($genislik, $yukseklik) = getimagesize($dosya);
$yeni_genislik = $genislik * $oran;
$yeni_yukseklik = $yukseklik * $oran;
$mevcut_resim = imagecreatefromjpeg($dosya);
$yeni_resim = imagecreatetruecolor($yeni_genislik, $yeni_yukseklik);
imagecopyresampled($yeni_resim, $mevcut_resim, 0, 0, 0, 0, $yeni_genislik, $yeni_yukseklik, $genislik, $yukseklik);
//imagecopyresized($yeni_resim, $mevcut_resim, 0, 0, 0, 0, $yeni_genislik, $yeni_yukseklik, $genislik, $yukseklik);
imagejpeg($yeni_resim);
//imagejpeg($yeni_resim, 'yeni_resim.jpg', 100); // oluşan resmi yeni_resim.jpg olarak %100 kalitede kaydet.
?>
Resim boyutunu küçültmek için 0 ila 1 arasında bir değer, resim boyutunu büyütme için 1’den büyük değer verilmesi yeterli olacaktır.
Resim genişliği ve yüksekliği 2500 olan bir resim 0.5 oranında küçültülünce yeni resim genişliği ve yüksekliği (2500 * 0,5 =) 1250 olur.
Aşağıdaki örnekte verilen genişlik veya yükseklik boyutuna göre resim boyutu ayarlanmaktadır.
<?php
header('Content-type: image/jpg');
$dosya = 'resim.jpg';
list($genislik, $yukseklik) = getimagesize($dosya);
$boyut = 250;
$oran = $genislik / $boyut;
//$oran = $yukseklik / $boyut;
$yeni_genislik = $genislik / $oran;
$yeni_yukseklik = $yukseklik / $oran;
$mevcut_resim = imagecreatefromjpeg($dosya);
$yeni_resim = imagecreatetruecolor($yeni_genislik, $yeni_yukseklik);
imagecopyresampled($yeni_resim, $mevcut_resim, 0, 0, 0, 0, $yeni_genislik, $yeni_yukseklik, $genislik, $yukseklik);
//imagecopyresized($yeni_resim, $mevcut_resim, 0, 0, 0, 0, $yeni_genislik, $yeni_yukseklik, $genislik, $yukseklik);
imagejpeg($yeni_resim);
//imagejpeg($yeni_resim, 'yeni_resim.jpg', 100); // oluşan resmi yeni_resim.jpg olarak %100 kalitede kaydet.
?>
Resim boyutu hesaplanırken girilen boyut değeri genişliğe göre ($genislik) hesaplandığından, genişliği 250px, yüksekliği ise 250px oranına göre değer alacaktır.
Oran hesaplanırken genişlik yerine ($genislik), yükseklik ayarlandığında ($yukseklik), resmin genişliği verilen yükseklik boyutuna göre ayarlanacaktır.
PHP Derslerine buradan ulaşabilirsiniz…
Hayırlı günler dilerim.