tworzenie miniatury

0

Witam, chcę żeby można było wgrywać plik graficzny na serwer. Nie chcę ustawiać max. rozmiaru na wgrywany plik. Jeżeli dany plik będzie zbyt wielki, program automatycznie zmniejszy go do rozmiarów jakie mnie interesują. Jeżeli plik będzie mniejszy od standardu , program nie będzie go zmieniać. Mam do tego taki oto kod.

Funkcja tworzenia odpowiedniego obrazu (skorzystałem z kodu na tworzenie minitury):

function miniaturka1($file,$img,$imgdest) {
	if(file_exists($img)){
		list($width, $height) = getimagesize($img);
		
                if ($width>$height)
                {
                      if ($width>=700) {
                       $x = '700';
                       $y = ($x / $width) * $height;
                         }
                      else {
                       $x= $width;
                       $y= $height;
                           }

                }else{
                      if ($height>=600) {
                       $y = '600';
                       $x = ($y / $height) * $width;
                                        }
                      else {
                       $x= $width;
                       $y= $height;
                           }
                 
                }


		if(exif_imagetype($img)==2){
			$img1 = imagecreatefromjpeg($img);
			$imgdest1 = imagecreatetruecolor($x, $y);
			imagecopyresampled($imgdest1, $img1, 0, 0, 0, 0, $x, $y, $width, $height);
			imagejpeg($imgdest1,$imgdest);
		}
		if(exif_imagetype($img)==1){
			$img1 = imagecreatefromgif($img);
			$imgdest1 = imagecreate($x, $y);
			imagecopyResampled($imgdest1, $img1, 0, 0, 0, 0, $x, $y, $width, $height);
	    	imagejpeg($imgdest1,$imgdest);
		}

	    imagedestroy($img1);
	    imagedestroy($imgdest1);
	}
}

kod:

$uploadfile = array('');
			$files = array('');

			$licznik = 0;
			for($a=1; $a<=6; $a++){
				$plik = "photo$a";

				
				if($_FILES[$plik]['size'] != 0){
					$nazwa_pliku = $_FILES[$plik]['name'];

					if($_FILES[$plik]['type'] == "image/jpg" || $_FILES[$plik]['type'] == "image/jpeg" || $_FILES[$plik]['type'] == "image/pjpeg" || $_FILES[$plik]['type'] == "image/gif"){
						$ext = ".jpg";
					}
					else{
						$errortext[$i]='Dozwolone formaty pliku to: *.jpg.<BR>'; $i++; $error=true;
					}

					$pre = 'obraz';

					$rand = rand(100000, 999999);
					$file = "$pre.$rand$ext";

					$folder = "zdjecia/";

					while(file_exists($name)){
						$pre = 'obraz';

						$rand = rand(100000, 999999);
						$file = "$pre.$rand$ext";

						$folder = "zdjecia/";
					}

					$files[$a] = $file;

					if(!file_exists($folder)){ $errortext[$i]='Wystąpił błąd. Spróbuj dodać plik ponownie.<BR>'; $i++; $error=true;}

					$uploaddir = getcwd()."/$folder";
					$uploadfile[$a] = "$uploaddir$file";
					$licznik++;
				}
			}
		}
	}
	else{ $errortext[$i]='Wystąpił błąd. Nie wykonano operacji.<BR>'; $i++; $error=true;}

	if($error==false){
		for($a=1; $a<=6; $a++){
		
			$plik = "photo$a";
			
			if($_FILES[$plik]['size']!= 0){
                                  	$folder = "zdjecia/";
				## miniaturka ##

				$file = $files[$a];
				$img = $_FILES[$plik]['tmp_name'];
				
			
				$imgdest = "$folder$file";
				miniaturka1($file,$img,$imgdest);
			
		}  }  }

formularz:

	               echo'<TR><TD>';
		
			for($a=1;$a<=6;$a++){
			
                       echo'<INPUT type=file name="photo'.$a.'" class=cell2><BR>';
			
                          }
			            
                       echo'</TD></TR>';

Oceńcie według siebie, czy można by to jakoś inaczej zrobić, łatwiej czy spraniej

0

Ja uzywam czegos takiego:

http://pastebin.4programmers.net/2672

Przy czym miniaturki nie generuje przy uploadowaniu tylko do usera wysylam w src obrazka cos takiego: "skrypt.php?url=obrazek.jpg".

1 użytkowników online, w tym zalogowanych: 0, gości: 1