Php Çoklu Resim Boyutlandırma

Çoklu Resim Boyutlandırma

Çoklu Resim Boyutlandırma

Merhabalar… Çoklu resim boyutlandırma yapmam gerekiyordu… Çok aradım; yabancı kaynaklarda dahi bulamadım.  Hamdolsun, sonunda yapmayı başardım… Programın Özellikleri:

*İstediğiniz kadar resmi aynı anda boyutlandırma
*Türkçe karakter, boşluk vb dosya isimlerini düzenleme
*Resimleri istediğiniz boyutlarda büyük ve küçük olarak boyutlandırma
*Resimlerin yükleneceği klasörü ayarlayabilme
*Aynı isimde resimlerin üzerine yazmayı engellemek için dosya adlarına tarih ekleme
*Küçük resimlerin dosya adlarına “kucuk” ifadesini ekleme

*Resimler klasörünü açmayı ve sunucuda chmod 777 ayarlamayı unutmayın.
*Eğer büyük – küçük şeklinde değilde sadece bir defa boyutlandırmasını istiyorsanız ilgili satırların önüne // işareti koyabilirsiniz.

resim_yukle.php kodları

<form  enctype="multipart/form-data" action="" method="post">   

    <table border=0 cellpadding=3>
    <tr>
      <th>Dahiweb.Com <br>
      Coklu Resim Boyutlandirma</th>
    </tr>
    <tr><td><input type="file" name="resimler[]"></td></tr>
    <tr><td><input type="file" name="resimler[]"></td></tr>
    <tr><td><input type="file" name="resimler[]"></td></tr>
    <tr><td colspan=2 align="center"><input type="submit"></td></tr>
  </table>

</form>

<? //bismillah
if($_FILES['resimler'])
{
$file = $_FILES['resimler'];
include("resim_boyutla.php");
 $resim_klasor="resimler";
 // bu klasorleri acmayi unutmayin mutlaka bu klasore yazma izni vermelisiniz chmod 777

 $buyuk_resim_en=640;
 $buyuk_resim_boy=480;

 $kucuk_resim_en=200;
 $kucuk_resim_boy=150;

function turkcekarakter($isim){
  $bulunacak = array('ç','Ç','ı','İ','ğ','Ğ','ü','ö','Ş','ş','Ö','Ü',',',' ','(',')','[',']');
  $degistir  = array('c','C','i','I','g','G','u','o','S','s','O','U','','_','','','','');

  $isim=str_replace($bulunacak, $degistir, $isim);
return($isim);
}

$klasor="gonder";   

$k = count($file['name']);
$desteklenenformatlar = array ("image/jpeg","image/pjpeg");

for($i=0 ; $i < $k ; $i++)
{

$isim = split('/',urldecode($file['name'][$i]));
$rand =time();//Burada zamanı alıyoz
if(in_array ($file['type'][$i], $desteklenenformatlar))
{
$resim=$resim_klasor."/".$rand."_".turkcekarakter($isim[count($isim)-1]);

  move_uploaded_file($file['tmp_name'][$i], $resim);

  $kucukresim  =$resim_klasor."/".$rand."_kucuk_".turkcekarakter($isim[count($isim)-1]);
  move_uploaded_file($_FILES["resim"]["tmp_name"],$kucukresim);

  // kucuk resmi boyutlandiriyoruz
  $icerik = resample($resim,$kucuk_resim_en,$kucuk_resim_boy);
  $dosya  = fopen ($kucukresim,"w+");
       fwrite($dosya,$icerik);
       fclose($dosya);

  // buyuk resmi boyutlandiriyoruz
  $icerik = resample($resim,$buyuk_resim_en,$buyuk_resim_boy);
  $dosya  = fopen ($resim,"w+");
       fwrite($dosya,$icerik);
       fclose($dosya);

  // resim boyutlandirma bitti

echo"büyük resim adı=$resim<br />";
echo"küçük resim adı=$kucukresim<br /><br />";
// mysql e de bir alt satırda ekleyebilirsiniz...
// mysql_query("insert into tablo ....
}
}
}
// Allah'a şükür bunuda çözdük...
?>

resim_boyutla.php kodları

<?php
  function resample($resim,$max_en,$max_boy)
     {

     # Icerik icin kesi baslat ...
     ob_start();

     # Ilk boyutlar
     $boyut = getimagesize($resim);
     $en    = $boyut[0];
     $boy   = $boyut[1];

     # Yeni boyutlar
     $x_oran = $max_en  / $en;
     $y_oran = $max_boy / $boy;

     if (($en <= $max_en) and ($boy <= $max_boy)){
        $son_en  = $en;
        $son_boy = $boy;
        }
     else if (($x_oran * $boy) < $max_boy){
        $son_en  = $max_en;
        $son_boy = ceil($x_oran * $boy);
        }
     else {
        $son_en  = ceil($y_oran * $en);
        $son_boy = $max_boy;
        }

     # Eski ve yeni resimler
     $eski = imagecreatefromjpeg($resim);
     $yeni = imagecreatetruecolor($son_en,$son_boy);

     # Eski resmi yeniden orneklendir
     imagecopyresampled(
        $yeni,$eski,0,0,0,0,
        $son_en,$son_boy,$en,$boy);

     # Yeni resmi bas ve icerigi cek
     imagejpeg($yeni,null,-1);
     $icerik = ob_get_contents();

     # Resimleri yoket ve icerigi cikart
     ob_end_clean();
     imagedestroy($eski);
     imagedestroy($yeni);

     return $icerik;

 }
?>

Yazar: Mustafa Şadoğlu

Mustafa sitemizde 97 yazı eklemiş...




Benzer Konularımıza da Göz Atın!

coded by nessus
Share
  • şafak

    Allah razı olsun hocam çok işme yaradı

  • http://yok hakan yıldırım

    Merhabalar,

    Ufak bir sorum olacaktır. scripti sorunsuz çalıştırdım öncelikle teşekkür ederim, fakat ben döngünün dışına taşımak istiyorum resim adlarını. birden fazla resim yükleyince resim adlarını döngünün dışına taşıyamıyorum. bunu nasıl yapabilirim ? tekrardan teşekkür ederim.

  • http://www.sefaaydin.net Sefa AYDIN

    @erenkucuk
    ben büyük bir işi teslim etmek üzereyken çoklu resim yükleme istenildi. Bu scriptte resim boyutlandırma çok iyi. o yüzden buyuk_resim satırında virgül ile ayırarak eklemek istedim. Bu şekilde tek bir resim yüklenebiliyor veritabanına..

    neyse yinede teşekkür ederim arkadaşım..

  • http://tikiplatforms.in erenkucuk

    @Sefa AYDIN
    Efendim o komut devre dışı amacı resim yüklendikden sonra bir alt satıra geç bunuda şöyle yapabilirsiniz.

    mysql_query("insert into tablo_adi(no, buyuk_resim, kucuk_resim)
     values("NULL","$resim", "$kucukresim")"); şeklinde 
    kullanabilirsiniz :)
    
  • http://sefaaydin.net Sefa

    Neden yorumum silindi acaba?

  • http://www.sefaaydin.net Sefa AYDIN

    Asqar :
    Hocam bu konuda tek takıldığım nokta “mysql_query(“insert into tablo ….”
    ve siz de bu kısmı … ile belirtmişsiniz. eğer mümkün ise birden çok yüklenen resimleri veri tabanına nasıl kaydedebiliriz…

    bende bu arkadaşın takıldığı yerde takıldım. virgülle ayırıp resimleri kaydedip daha sonra veritabanından çekerken ne yapmam gerekir. Çünkü ben resimleri jquery slidera ayrı ayrı çekmem gerekiyor. explode ile ayırıcam da nasıl ypacağımı bilemedim :)

  • Asqar

    Hocam bu konuda tek takıldığım nokta “mysql_query(“insert into tablo ….”
    ve siz de bu kısmı … ile belirtmişsiniz. eğer mümkün ise birden çok yüklenen resimleri veri tabanına nasıl kaydedebiliriz…

  • serkan

    Merhaba Mustafa Bey,

    Yazılarınız çok güzel ve yararlı emeğinize Sağlık,
    Sorum olacak yarımdımcı olursanız sevinirim.

    resmi yüklediğimiz alanlarıdan misal 1.si boş geçilmesin kısıtı vermek istiyorum ama hangisinin 1.si hangisinin 2. olduğunu neye göre ayıracağız. enctype=”multipart/form-data” gereği name=”resimler[]” kısmı hepsinde aynı olduğundan bu ayrımı yapamıyorum yardımcı olabilir misiniz? Teşekkürler

    • http://www.dahiweb.com/siteye-destek-verenler/mustafa-sadoglu Mustafa Şadoğlu

      resimler[]
      yerine
      resimler[0], resimler[1] şeklinde kullanırsanız isteğinizi elde edebilirsiniz…
      kolay gelsin