• 05-01-2010, 14:35:31
    #1
    input ile yüklenen resmi 2 ayrı boyutta kaydeden php kodum var.
    Sorun şu ki Örneğin:
    94x95 boyutlu 2.35 kb lık bir resmi yüklüyorum
    1. boyut 60x60 3.60kb yapıyor.
    2. boyut 130x80 7.69 kb yapıyor.
    Sorun şu ki iyi güzel boyut kücültüyor ama kb artıyor. Ne anladım bu işten ( farklı boyutta resimleride denedim)
    bunu nasıl düzeltirim?

    //fotoyu formdan çektim
    $posted  = "resim";
    
    //fotonun kapladığı boyutuna bak
    $boyut   = $_FILES["resim"]["size"];
    
    //boyut 2 mb dan büyükse uyar
    if($boyut > "10000000"){ //boyut kontrol if başla
    echo "<center><br><img src='imge/unlem.gif'>
    <br><br>Dosya Boyutunuz Sınırı Aşıyor. Max Dosya Boyutu: 2.00 
    (İki) Mb<br><br><a href='javascript:history.back(1);'>«Geri</a>
    </center>";
    }elseif($boyut < "10000000"){  //boyut kontrol elseif başla
    
    //resim 2 mb dan kuçukse işleme başla
    if($_FILES["resim"]['name']){  //resim if başla
    
    $filename=$_FILES["$posted"]['name'];
    $efilename = explode('.', $filename);
    $uzanti = $efilename[count($efilename) - 1];
    $uzantilar=array('jpg','JPG','Jpeg','Jpg',
    'JPEG','gif','GIF','Gif'); 
            
            //uzantı jpeg yada gif değilse uploadı durdur ve uyarı ver
            if(!in_array($uzanti,$uzantilar)){
                echo "<center><br><img src='imge/unlem.gif'><br><br>Geçersiz 
                Fotoğraf Uzantısı. Lütfen Jpeg ve Gif Formatında Fotoğraf Yükleyiniz!<br>
    <br><a href='javascript:history.back(1);'>«Geri</a></center>";
                  exit;
              }   
    
    //uzantı uygunsa yeni isim ver ve upload yap             
    $isim=rand(0,999999999);
    $yeniad = "".$isim.".".$uzanti."";
    move_uploaded_file($_FILES["$posted"]['tmp_name'],"depo/logo/b/".$yeniad);
    
    }//resim if bitir
    
    //upload ettiğimiz fotonun yolu
    $fotoyolu  = "depo/logo/b/".$yeniad;
    
    //upload ettiğimiz fotunun uzantısını alıyoruz
    $ayir = explode('.',$fotoyolu); 
    $ele  = count($ayir)-1; 
    $uzantisi = $ayir["$ele"];
    
    //Uzantı jpg ise Boyutlama ve yeni isim işlemi yap
    if($uzantisi=="jpeg" || $uzantisi=="jpg" || $uzantisi=="Jpeg" || $uzantisi=="Jpg" || $uzantisi=="JPG" || $uzantisi=="JPEG"){ 
    //uzantisi kontrol if başla
    
    $buyuk_foto = $fotoyolu;
    $percent = 0.5;
    header("Content-type: image/jpeg");
    list($width, $height) = getimagesize($buyuk_foto);
    
    $newwidth = 130;  //büyük foto için istenen genişlik
    $newheight = 80; //büyük foto için istenen yükseklik
    
    $thumb = imagecreatetruecolor($newwidth, $newheight);
    $source = imagecreatefromjpeg($buyuk_foto);
    imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    $afilename = explode('.', $buyuk_foto);
    $uzan = $afilename[count($afilename) - 1];
    $ad   =rand(0,999999999);
    $yenisi = "".$ad.".".$uzan."";
    
    //veritabanına kayıt edilecek yeni boyutlandırdığımız fotonun yolu
    $buyuk = "depo/logo/b/".$yenisi;
    imagejpeg($thumb,$buyuk,100);
    
    $byk = $yenisi;
    
    //ilk upload ettiğimiz yani boyutlandırmadan önceki fotoyu siliyoruz
    unlink("$buyuk_foto");
    
    #--yüklenen büyük fotoyu kucuk klasörüne fotonun küçük halini oluşturuyoruz
    $yol = $buyuk;
    $ayirr = explode('.',$yol); 
    $suz = count($ayirr) -1; 
    $uzantisii = $ayirr["$suz"];
    
    $buyuk_img = $buyuk;
    $percent = 0.5;
    header("Content-type: image/jpeg");
    list($width, $height) = getimagesize($buyuk_img);
    
    $newwidth = 60;  //küçük foto için istenen genişlik
    $newheight = 60;  //küçük foto için istenen yükseklik
    
    $thumb = imagecreatetruecolor($newwidth, $newheight);
    $source = imagecreatefromjpeg($buyuk_img);
    imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    $afilename = explode('.', $buyuk_img);
    $uzan = $afilename[count($afilename) - 1];
    $ad   =rand(0,999999999);
    $yenisi = "".$ad.".".$uzan."";
    
    //veritabanına fotonun küçük halinin yolunu kayıt ediyoruz yani ( $kucuk )
    $kucuk = "depo/logo/k/".$yenisi;
    imagejpeg($thumb,$kucuk,100);
    #--yüklenen büyük fotoyu kucuk klasörüne fotonun küçük halini oluşturuyoruz
    
    $kck = $yenisi;
    
    }//uzantisi kontrol if bitir
    
    //Uzantı gif ise Boyutlama ve yeni isim işlemi yap
    elseif($uzantisi=="gif" || $uzantisi=="GIF" || $uzantisi=="Gif"){ //uzantisi gif kontrolu elseif başla
    
    $buyuk_foto = $fotoyolu;
    $percent = 0.5;
    header("Content-type: image/jpeg");
    list($width, $height) = getimagesize($buyuk_foto);
    
    $newwidth = 130;  //büyük foto için istenen genişlik
    $newheight = 80; //büyük foto için istenen yükseklik
    
    $thumb = imagecreatetruecolor($newwidth, $newheight);
    $source = imagecreatefromgif($buyuk_foto);
    imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    $afilename = explode('.', $buyuk_foto);
    $uzan = $afilename[count($afilename) - 1];
    $ad   =rand(0,999999999);
    $yenisi = "".$ad.".".$uzan."";
    
    //veritabanına kayıt edilecek yeni boyutlandırdığımız fotonun yolu
    $buyuk = "depo/logo/b/".$yenisi;
    imagegif($thumb,$buyuk,100);
    
    //ilk upload ettiğimiz yani boyutlandırmadan önceki fotoyu siliyoruz
    unlink("$buyuk_foto");
    
    #--yüklenen büyük fotoyu kucuk klasörüne fotonun küçük halini oluşturuyoruz
    $yol = $buyuk;
    $ayirr = explode('.',$yol); 
    $suz = count($ayirr) -1; 
    $uzantisii = $ayirr["$suz"];
    
    $buyuk_img = $buyuk;
    $percent = 0.5;
    header("Content-type: image/jpeg");
    list($width, $height) = getimagesize($buyuk_img);
    
    $newwidth = 60;  //küçük foto için istenen genişlik
    $newheight = 60;  //küçük foto için istenen yükseklik
    
    $thumb = imagecreatetruecolor($newwidth, $newheight);
    $source = imagecreatefromgif($buyuk_img);
    imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    $afilename = explode('.', $buyuk_img);
    $uzan = $afilename[count($afilename) - 1];
    $ad   =rand(0,999999999);
    $yenisi = "".$ad.".".$uzan."";
    
    //veritabanına fotonun küçük halinin yolunu kayıt ediyoruz yani ( $kucuk )
    $kucuk = "depo/logo/k/".$yenisi;
    imagegif($thumb,$kucuk,100);
    #--yüklenen büyük fotoyu kucuk klasörüne fotonun küçük halini oluşturuyoruz
    echo "deneme";
    
    } //uzantisi gif kontrolu elseif başla
    
    
    }//boyut kontrol elseif bitir
  • 05-01-2010, 14:43:35
    #2
    Üyeliği durduruldu
    thumb = imagecreatetruecolor($newwidth, $newheight);
    $source = imagecreatefromjpeg($buyuk_foto);


    imagecreatetruecolor yerine imagecreate kullanmayı dene eğer renkleri bozarza

    imagegif($thumb,$kucuk,100);


    burda verdiğin kaliteyi düşür 85 falan yap
  • 05-01-2010, 14:57:55
    #3
    D3LLy imagecreate denedim renk bozdu 3.60 oldumu sana 3.57 dark etmedi yani.
    imagegif($thumb,$kucuk,85); yaptım kb gene değişmedi 3.60 oldu.
    Saol genede.
  • 05-01-2010, 17:49:05
    #4
    Üyeliği durduruldu
    RemiX adlı üyeden alıntı: mesajı görüntüle
    D3LLy imagecreate denedim renk bozdu 3.60 oldumu sana 3.57 dark etmedi yani.
    imagegif($thumb,$kucuk,85); yaptım kb gene değişmedi 3.60 oldu.
    Saol genede.
    çok büyük farklar beklemeyin değeri bayağı bir düşürmeniz lazım ozamanda resim gözle görülür derecede deformasyona uğrar.