Resim Küçültme ve Kaydetme (Thumbnail)

Yazıda ilk resmi bulmak. PHP Yazımda, “Bir dahaki yazımda, aldığımız resimi hem küçültecek, hemde küçülttüğümüz resimi kaydedeceğiz. PHP resim dosyamızda ise fonksiyon her çağrıldığında, önce küçük resim klasöründe resim var mı buna bakacak, resim var ise resim üzerinde işlem yapmaksızın, hali hazır küçültülmüş resmi göstereceğiz. Yok ise yeni bir tane küçültülmüş resim oluşturacak, dosyaya kaydedeceğiz..” demiştim… Resim küçültme fonksiyonumuz aşağıdaki gibidir…

Kullanımı ise “<img src=”<?php resim($resim_yolu,200,200,90) alt=”.$baslik.” />” biçimindedir. Örneğin resimi veritabanından çektiğimizi düşünelim, bu halde önceki yazımda belirttiğim yol ile yazıdaki resimin yolunu alırız…

Örnek Uygulamayı Buradan İnceleyebilirsiniz..

Örnek Uygulamayı Buradan İndirebilirsiniz

Resim yolu örneği;

$resim_yolu = preg_match('@<img.+src="(.*)".*>@Uims', $icerik, $matches);
if ( $resim_yolu  ) $resim_yolu = $matches[1];
echo '<img src="'.resim($resim_yolu,200,200,90).'" alt = "" />';

Fonksiyonumuz;

function resim($img_src,$en=150,$boy=150,$kalite=100){
	if (trim( $img_src ) == "") return false;

        $adlandir = explode( "/", $img_src );
        $t = count($adlandir);
	$yeni_resim = $adlandir[$t-2]."-".$en."x".$boy."-".$adlandir[$t-1]; // eski klasorude sectik
$yeni_resim = str_replace('%20', "-", $yeni_resim);
$yeni_resim = preg_replace( '/[^a-zA-Z0-9_-]/s', '',$yeni_resim);

        // resim tipini al
	$type = strtolower(substr(strrchr( $img_src,"." ),1));
	$resim_dosyasi = 'kucuk_resim';

        // Kucultulmus resimlerin gosterilecegi ve kopyalanacagi klasor ismi
        $filename = $resim_dosyasi.'/'.$yeni_resim;

	// eger yok ise olustur
	if (!file_exists($resim_dosyasi)) mkdir($resim_dosyasi);

	if (!file_exists($resim_dosyasi)) return false;

        // resim var ise direk goster ve cik.
	if ( file_exists($filename) ) return $filename;

	// Yeni olcegi uyarla
	list($en_img, $boy_img) = getimagesize($img_src);

        // Resim olculerden kucuk ise islem yapma orjinali goster
	if ( $en_img <= $en and $boy_img <= $boy )
            return $img_src;

        $oran = $en_img/$boy_img;
        $en/$boy > $oran ? $en = $boy*$oran: $boy = $en/$oran;

	// isle
	$image_p = imagecreatetruecolor($en, $boy);
	// gif ve png saydamlik ayari
	if($type == "gif" or $type == "png"){
imagecolortransparent($image_p,imagecolorallocatealpha($image_p, 0, 0, 0, 127));
                imagealphablending($image_p, false);
                imagesavealpha($image_p, true);
	}
	switch($type) {
		case 'gif': $image = imagecreatefromgif($img_src);  break;
		case 'png': $image = imagecreatefrompng($img_src); break;
		case 'bmp': $image = imagecreatefromwbmp($img_src); break;
		default: $image = imagecreatefromjpeg($img_src);
	}
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $en, $boy, $en_img, $boy_img);
	// Kaydet ve ekrana cikis yap
	if($type == "gif" ) {
		imagegif($image_p,$filename,$kalite);
		imagedestroy($image);
		return $filename;
	}
	elseif($type == "png" ) {
		imagepng($image_p,$filename);
		imagedestroy($image);
		return $filename;
	}
	elseif($type == "bmp" ) {
		imagewbmp($image_p,$filename);
		imagedestroy($image);
		return $filename;
	}
	else{
		imagejpeg($image_p,$filename,$kalite);
		imagedestroy($image);
		return $filename;
	}
}

1 Yorum

  1. bu da önemli bir konu.. teşekkürler
    fazla oluyorum ama yorum yapılan konuya başka yorumlar ya da cevap yazılınca eposta gelse süper olur. soru soruyor sonra fırsat olmuyor bakamıyor unutuyoruz. teşekkür edemiyoruz cevap yazılınca

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir