ana sayfa > Php > Php Çoklu Resim Boyutlandırma

Php Çoklu Resim Boyutlandırma

Cumartesi, 26 Ara 2009 yorum ekle yorumlara git

Ç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 96 yazı eklemiş...




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

coded by nessus
Share


Categories: Php Tags:
Bu kategorideki rastgele diğer yazılar
  • » Php Testi (appserv)
  • » Php Türkçe Karakter Temizleme
  • » Php ile Oturum Yönetimi
  • » Mysql Veri Türleri ve Anlamları
  • » Php post methodu
  • » PHP GET Temizleme Fonksiyonu
  • » PHP tek mi çift mi?
  • » Php Mail Gönderme
  • » php Dizin Listeleme
  • » Mysql Komutları - Fonksiyonları
  • » Rastgele Veri Çekmek
  • » Dreamweaver ile Php Site Tanımlama
  • » Php & Mysql Kurulumu (EasyPhp)
  • » Kiralama kodu
  • » PHP ve MySQL kullanarak veri kaydı



    1. şafak
      Salı, 23 Tem 2013 zamanında 04:37 | #1

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

    2. Pazartesi, 29 Nis 2013 zamanında 00:57 | #2

      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.

    3. Çarşamba, 10 Nis 2013 zamanında 15:21 | #3

      @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..

    4. Çarşamba, 03 Nis 2013 zamanında 00:20 | #4

      @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 :)
      
    5. Pazartesi, 01 Nis 2013 zamanında 19:26 | #5

      Neden yorumum silindi acaba?

    6. Cumartesi, 23 Mar 2013 zamanında 21:39 | #6

      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 :)

    7. Asqar
      Salı, 12 Mar 2013 zamanında 01:47 | #7

      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…

    yorum sayfaları
    1 2 2862
    1. Pazar, 28 Mar 2010 zamanında 21:31 | #1

    *
    To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
    Click to hear an audio file of the anti-spam word


    HasMeydan.Com