Php ile Orantılı Resim Boyutlandırma

 bcakir
 27 Ekim 2011
 Php

Merhaba arkadaşlar bu yazımda bir resmi istenilen boyutta küçültme işlemini ve eğer resim boyutları orantılı küçültmeye uygun değilse de  kenarlarından parça çıkararak orantılı küçültme işlemini anlatacağım. Bu uygulamayla resimlerinizi kolayca boyutlandırarak hem server alanından tasarruf edecek hem de sitenizin hızlı çalışmasını sağlayacaksınız. Ayrıca uygulamamız yeni resmi de kaydedecek. Bu uygulamayı iyice öğrenmek istiyorsanız daha önce anlattığım resim kırpma yazısına bakmanızda fayda var. Çünkü bu uygulamada, eski yaptığımız uygulamayı biraz daha geliştireceğiz. Uygulamamızın açıklaması genel olarak böyleydi, şimdi geliştirme işlemine geçebiliriz.

<?php
//resmin ismini girin
$resim="resim.jpg";
//yeni resmin genişliğini girin
$r_genislik=150;
//yeni resmin yüksekliğini girin
$r_yukseklik=150; 

//resmin bilgilerinin alınması
list($gen, $yuk, $type) = getimagesize($resim);

//en ve boy oranının hesaplanması
$enOran = $r_genislik / $gen;
$boyOran = $r_yukseklik / $yuk;

//aranın ayarlanması
if($enOran > $boyOran){
    $yEn = floor($gen * $enOran);
    $yBoy = floor($yuk * $enOran);
}else{
    $yEn = floor($gen * $boyOran);
    $yBoy = floor($yuk * $boyOran);
}

//kesilmeye başlangıç noktalarının hesaplanaması
$fEn = floor(0 - (($yEn - $r_genislik) / 2));
$fBoy = floor(0 - (($yBoy - $r_yukseklik) / 2));

//resmin hafızaya alınması
$o_img = imagecreatefromjpeg($resim);

//renklerin belirlenmesi
$g_img = imagecreatetruecolor($r_genislik, $r_yukseklik);

//resmi keserek oluşturma
imagecopyresampled($g_img,$o_img,$fEn,$fBoy,0,0,$yEn,$yBoy,$gen,$yuk);
imagejpeg($g_img, 'yeni_'.$resim); 

//resmin kaynağını silme
imagedestroy($o_img);
imagedestroy($g_img);
?>

Uygulamamızı yukarıda bölüm bölüm açıkladım. Bu adımlara dikkat ederek sizde resimlerinizi kolayca boyutlandırabilirsiniz. Uygulamamızın çalışması için Apache Server Graphic Design modülünün aktif olması gerekmektedir. Bilgisayarınızda veya serverınızda php.ini dosyasına girip, arama kutusu yardımı ile php_gd2.dll (sürümüne göre php_gd.dll olarak da geçebilir) satırlarının önünde bulunan noktalı virgülü (;) kaldırıp kolayca modülü aktif hale getirebilirsiniz. Ayrıca uygulamanın çalışması için de resimin Php betiğimizin çalıştığı yerde olması ya da resmin dosya yolunun kendinize göre uyarlanması gerekiyor. Böylece uygulamamız çalışması için gerekli olan önemli noktaları da açıklayarak bir yazımızı daha tamamlamış olduk. Yararlı bir uygulama olması dileğiyle.

 7.522 Okunma

Bu yazıya 5 yorum yapılmış.

  1. Merhaba hocam, bununla ilgili güzel bir sınıf buldum ve bu sınıfı paylaştım. Güzel bir boyutlandırma sınıfı http://www.trkodlama.com/php/php-ile-resmi-yeniden-boyutlandirma-471.html

  2. Resmin türüne göre imagecreatefrom yapmak gerekiyor, yapılmazsa çıkan resim sorunlu oluyor.

  3. hocam çok güzel bir örnek teşekkür ederim ama sormak istediğim resimleri gösteremiyormuyuz keşke onada örnek yapsaydınız. Yinede teşekkürler.

    • En sonda oluşan resmin dosya adını (‘yeni_’.$resim) alıp img etiketi içerisinde kaynak alanına (src) yazarsan, yeni oluşturduğun resmi ekranda göstermiş olursun.

  4. form dan gelen resmi nasıl aynı şekilde işlem yaptıracağız? sanırım sadece aynı dizinde olan bir resmi yapıyor. mesela ben bir siteye resim yüklemek istiyorum, gözat dedim bilgisayardan yükle dedim, gönder dediğimde buradaki kodlara, hata veriyor. form dan resim boyut ve genişiliği de belirleye biliyorum fakat resim aynı dizinde olması gerekiyor sanırım. dışarıdan form la gönderilen resmi nasıl işleme alacağız onu belirtseniz çok iyi olur gerçekten.

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla Php
Kapat