PHP ile Resim Boyutlandırmak

şöyle güzel bir fonksiyon ile yapılabilir.

function image_resize($dosya, $klasor="", $width, $height){

  // orjineal genişlik ve yükseklik alındı.

    $tmp_dosya = $dosya["tmp_name"];

  $adi = $dosya["name"];

  $type = $dosya["type"];

  list($owidth, $oheight) = getimagesize($tmp_dosya);

      // uzantısına göre resim oluşturuldu

  if($type == "image/jpeg"){

  $resource = imagecreatefromjpeg($tmp_dosya);

  }elseif($type == "image/png"){

  $resource = imagecreatefrompng($tmp_dosya);

  }else{

  $resource = imagecreatefromjpeg($tmp_dosya);

  }

    // yeni boş resim oluşturuldu

  $aq = imagecreatetruecolor($width, $height);

  // boş resim dolduruldu

  $cr = imagecopyresampled($aq, $resource, 0, 0, 0, 0, $width, $height, $owidth, $oheight);

    // uzantısına göre kaydedildi

  if($type == "image/jpeg"){

  imagejpeg($aq, $klasor."/".$adi, 90);

  }elseif($type == "image/png"){

  imagepng($aq, $klasor."/".$adi, 0);

  }else{

  imagejpeg($aq, $klasor."/".$adi, 90);

  }

 } // resize

 

vermeniz gereken: $_FILES["file"] değişkeni, hangi dizine kaydedeceği bilgisi ve boyut bilgileridir.

örnek: image_resize($_FILES["file"], "200x120", 200, 120);

Kullanım örnekleri:

 Yukarıda belirttiğim şekilde kullanabilirsiniz.

 

Ama siz önceden boyutlandırılmamış şekilde resimlerinizi yüklediniz mi? sorun değil. Aşağıdaki kodları düzenlenmesini istediğiniz resimlerin olduğu dizinde çalıştırırsanız resimleri istediğiniz boyut(lar)a çekebileceksiniz.

 

$dir = opendir(".");

$resimler = array();

 while(($dosya = readdir($dir)) != false){

  if(!is_dir($dosya)){

   $ext = strtolower(pathinfo($dosya, PATHINFO_EXTENSION));

   if($ext == "jpg"){

    $resimler[] = $dosya;       }

     }

 }

for($i=$kactan; $i<=$kaca; $i++){

   $dosya = $resimler[$i];

   $ahmet = Array(

    "tmp_name" => $dosya,

    "name" => $dosya,

    "type" => "image/jpeg"

   );

      echo "<pre>";

    print_r($ahmet);

   echo "</pre>";

      copy($dosya, "orj/$dosya");

   image_resize($ahmet, "200x120", 200, 120);

   image_resize($ahmet, "555x380", 555, 380);

   image_resize($ahmet, "570x320", 570, 320);

   unlink($dosya);

     }

    if($kactan > count($resimler)){

   die("dosyalar biddi");

  }

    header("Refresh:1;url=test.php?kactan=0&kaca=3");

 

ukarıdaki kod, bulunduğu dizindeki uzantısı jpg olan dosyaları bir diziye atar ve bu diziden üç tane dosyayı alıp $_FILES değişkenini simüle ederek fonksiyona gönderir.

Resmin orjinal halini "orj" dizinine, 200x120 lik halini ve diğer boyutlardaki halini ilgili dizinlere aktarıp bir dosyalık işi bittiğinde diğerine geçip döngüyü tamamlar. Döngü bittikten sonra bir sonraki 3 resmi almak için sayfa 1 saniye bekletilip bir sonraki dosyalar alınır.

Tarih:
Hit: 747
Yazar: iskeltan

Taglar: php image resize


Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.