• 17-06-2009, 11:55:45
    #1
    Arkadaşlar bayağı uğraştım ama yapamadım. Ham halini bir siteden aldığım kodda birkaç değişiklik ile ihtiyacıma yönelik bazı değişiklikler yaptım.

    Temelde istediğim
    yüklenen resim bir klasöre küçük hali başka bir klasöre dahada büyük hali ile yuklensin ve bu resimlerin adlarını veritaanına yükletebileyim idi.

    Buyuk halini klasöre yukletmeden ve isimlerini veritabanına kayıt etmede sorunum ok ama küçülyyüğüm resimin kalitesi çok kötüleşiyor. Kimi resimlerde adeta görünmeyecekkadar kararıyor bile. Ayrıca thumbluk resimin boyunu oranınca küçültemiyorum. Mesela 180 e 140 olarak belirlediğim küçük resimin max boyutunu resim dolduramıyorsa bile gri arka fon ile o belirlediğim ebatlara ulaşıyor. Buda kötü görüntü sebebi..

    Lafı daha faza uzatmadan kodu vereyimde siz deneyerek görün. Hem bu arada resim scripti v.b. istekle bulunan arkadaşlara bu hali ile bile güzel kaynak olur.

    <?php
    //veritabaný ayarlarým
    $dbhost		= "localhost";
    $dbadi		= "resimcalismalari";
    $dbuser		= "root";
    $dbpass		= "";
    $baglanti = @mysql_connect($dbhost,$dbuser,$dbpass);
    	if(! $baglanti) die("MYSQL Baglantisi saglanamadi");
    	@mysql_select_db($dbadi,$baglanti) or die("Veritabanina baglanti saglanamadi");
    	mysql_query("SET NAMES 'latin5'");  
    mysql_query("SET CHARACTER SET latin5");  
    mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");  
    //veritabaný ayarlarý bitþi
    /**
    * SORUNLAR
    1-THUMBNAİL BOZUK ÇIKIYOR
    2-THUMBNAİL BOYUTU BELİRLİ KALIPLARDA OLUYOR. RESMİN BOYUNCA ORANTILI KUCULEMİYOR
    */
    
    
    $upload_image_limit = 5; // How many images you want to upload at once?
    $upload_dir			= ""; // default script location, use relative or absolute path
    $enable_thumbnails	= 1 ; // set 0 to disable thumbnail creation
    $max_image_size		= 1024000 ; // max image size in bytes, default 1MB
    
    ##################### THUMBNAIL CREATER FROM GIF / JPG / PNG
    	
    function make_thumbnails($updir, $img){
    
    	$thumbnail_width	= 180;
    	$thumbnail_height	= 140;
    	$thumb_preword		= "thumb_";
    
    	$arr_image_details	= GetImageSize("$updir"."$img");
    	$original_width		= $arr_image_details[0];
    	$original_height	= $arr_image_details[1];
    
    	if( $original_width > $original_height ){
    		$new_width	= $thumbnail_width;
    		$new_height	= intval($original_height*$new_width/$original_width);
    	} else {
    		$new_height	= $thumbnail_height;
    		$new_width	= intval($original_width*$new_height/$original_height);
    	}
    
    	$dest_x = intval(($thumbnail_width - $new_width) / 2);
    	$dest_y = intval(($thumbnail_height - $new_height) / 2);
    
    
    
    	if($arr_image_details[2]==1) { $imgt = "ImageGIF"; $imgcreatefrom = "ImageCreateFromGIF";  }
    	if($arr_image_details[2]==2) { $imgt = "ImageJPEG"; $imgcreatefrom = "ImageCreateFromJPEG";  }
    	if($arr_image_details[2]==3) { $imgt = "ImagePNG"; $imgcreatefrom = "ImageCreateFromPNG";  }
    
    
    	if( $imgt ) { 
    		$old_image	= $imgcreatefrom("$updir"."$img");
    		$new_image	= imagecreate($thumbnail_width, $thumbnail_height);
    		imageCopyResized($new_image,$old_image,$dest_x, 		
    		$dest_y,0,0,$new_width,$new_height,$original_width,$original_height);
    		$imgt($new_image,"$updir"."$thumb_preword"."$img");
    	}
    
    }
    
    ################################# UPLOAD IMAGES
    	
    		foreach($_FILES as $k => $v){ 
    
    			$img_type = "";
    
    			### $htmo .= "$k => $v<hr />"; 	### print_r($_FILES);
    
    			if( !$_FILES[$k]['error'] && preg_match("#^image/#i", $_FILES[$k]['type']) && $_FILES[$k]['size'] < $max_image_size ){
    
    				$img_type = ($_FILES[$k]['type'] == "image/jpeg") ? ".jpg" : $img_type ;
    				$img_type = ($_FILES[$k]['type'] == "image/gif") ? ".gif" : $img_type ;
    				$img_type = ($_FILES[$k]['type'] == "image/png") ? ".png" : $img_type ;
    				
    				$yeniad		 = substr(uniqid(md5(rand())), 0,35);// bjk
    
    				$img_rname = $yeniad.$_FILES[$k]['name'];
    				$img_path = $upload_dir.$img_rname;
    
    				copy( $_FILES[$k]['tmp_name'], $img_path ); 
    				if($enable_thumbnails) make_thumbnails($upload_dir, $img_rname);
    				$feedback .= "Image and thumbnail created $img_rname<br />";
    				
    				//bjk
    				$resimkucuk		= "thumb_".$img_rname;
    				$yukle = mysql_query("INSERT INTO resim (resimnormal,resimkucuk) values ('$img_rname','$resimkucuk') ");
    					if($yukle){
    					echo"Resimler veritabanina Kaydedildi ";
    					}else{
    					echo"Hata Resim Veritabanina Kaydedilemedi";
    					}
    					//bjk
    
    			}
    		}
    
    
    
    ############################### HTML FORM
    	while($i++ < $upload_image_limit){
    		$form_img .= '<label>Image '.$i.': </label> <input type="file" name="uplimg'.$i.'"><br />';
    	}
    
    	$htmo .= '
    		<p>'.$feedback.'</p>
    		<form method="post" enctype="multipart/form-data">
    			'.$form_img.' <br />
    			<input type="submit" value="Upload Images!" style="margin-left: 50px;" />
    			
    		</form>
    		';	
    
    	echo $htmo;
    
    
    ?>
  • 17-06-2009, 12:25:26
    #2
    Üyeliği durduruldu
    ImageJPEG fonksiyonu ile kaydederken resmin kalitesini belirtebiliyorsunuz. digerleri için ama böyle bir paremetre mevcut degil. sadece jpeg resimleriniz mi bu şekilde bozuluyor
  • 17-06-2009, 12:33:03
    #3
    Hocam maleseg giflerdede görüntü kalitesi bozuluyor.. Ne yapmam gerekli?
  • 17-06-2009, 12:40:08
    #4
    Eposta Aktivasyonu Gerekmekte
    ImageCreate yerine imagecreatetruecolor ile resim oluşturursanız renkler düzgün olur.ama
    imagecreatetruecolor fonksiyonu gifleri desteklemiyor yani gifler için kullanamazsınız.O yüzden giflerde renkler atabilir.
  • 17-06-2009, 13:57:38
    #5
    Dualwarior adlı üyeden alıntı: mesajı görüntüle
    ImageCreate yerine imagecreatetruecolor ile resim oluşturursanız renkler düzgün olur.ama
    imagecreatetruecolor fonksiyonu gifleri desteklemiyor yani gifler için kullanamazsınız.O yüzden giflerde renkler atabilir.

    Hocam dediğiniz gibi imagecreatetruecolor dedim ve peg resimlerdeki kötü kalite kayboldu.. gercekçi kaliteye sahip oldum.. Bu şekilde gif , bmp, png, ico formatındaki resimleri nasıl koruyarak kalitesini küçültebilirim.

    Ayrıca resimler küçülürken oranlı sekilde değilde, belirttiğim 180 e 140 px şeklinde kuculuyor.. Ve resim arka plenda o 180 e 140 px lik yeri doldurmak için griye boyuyor..


    Mesela1800 e 1200 pixellik resim küçülünce ben maksimum 180 e 140px olsun istiyorum. Orantılı küçültmede bu isteğim sonucunda yeni resim 180e 120 pixel olur.(olması gerekir) Ama benim kodlarıda 180 e 140 oluyo ve genişlikteki 120 olması gerekirken 140 px e cıkan alanda 20 pixellik gri arkafon oluyor.
  • 17-06-2009, 14:03:53
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    kendin oranla o zaman sende ?

    formül ( width verilirse ):

    (istenilen width / resim gerçek width) * resim gerçek height

    Height verilip width oranlanmak istenirse

    (istenilen height / resim gerçek height ) * resim gerçek width

    Yani:

    (180 / 1800) * 1200 = 120 px height olması gerekir eğer width e göre height orantılı olmasını istersen.

    ya da height verip width orantılı olsun istersen

    (140 / 1200) * 1800 = 210 px width çıkar height ye göre width orantılı olmasını istersen
  • 17-06-2009, 19:16:37
    #7
    Sağolun arkadaşlar yapım.. Ama scriptinde % 50 siniş değiştirdim.. Sıfırdan yazsam bu kada r zorlanmazdım herhalde yardımlarını esirgemeyen Herkese teşekkürler