mój kod:
function CreateImageJPG($new_width, $new_height, $src, $path, $file, $quality) { $tmp_image=imagecreatefromjpeg($src); $width = imagesx($tmp_image); $height = imagesy($tmp_image); $new_image = imagecreatetruecolor($new_width,$new_height); imagecopyresized($new_image, $tmp_image,0,0,0,0, $new_width, $new_height, $width, $height); imagejpeg($new_image, $path.$file, $quality); } function scaleh($width, $height, $new_width) { if ($new_width>$width) { return ($height); } else { $new_height=$new_width/$width*$height; return($new_height); } return ($height); } function scalew($width, $height, $new_height) { if ($new_height>$height) { return ($width); } else { $new_width=$new_height/$height*$width; return($new_width); } return ($width); } { $src=$_FILES['obraz1']['tmp_name']; $path1='photos/maxi/'; $path2='photos/mini/'; $maxphotouserid=$DB->GetOne("SELECT MAX(id) FROM zdjecia_klasa WHERE userid='".$_GET['userid']."'"); mysql_query("INSERT INTO zdjecia_klasa (plik, rok_u, profilid, klasaid, userid) VALUES ('', '', '', '', '".$_GET['userid']."')"); if ($t=="jpg" || $t=="gif" || $t=="bmp" || $t=="png") { $new_height1=480; $new_width1=scalew($a[0], $a[1], $new_height1); $new_height3=120; $new_width3=scalew($a[0], $a[1], $new_height3); $file='klasa_'.$_GET['userid'].'_'.$maxphotoid.'_'.$_FILES['obraz1']['name']; $quality1=75; $quality3=75; if ($t=="jpg") { CreateImageJPG($new_width1, $new_height1, $src, $path1, $file, $quality1); CreateImageJPG($new_width3, $new_height3, $src, $path2, $file, $quality3); } $dane=$DB->GetRow("SELECT * FROM dziennik WHERE userid='".$_GET['userid']."'"); mysql_query("UPDATE zdjecia_klasa SET plik='".$file."', rok_u='".$dane['rok_u']."', profilid='".$dane['profilid']."', klasaid='".$dane['klasaid']."', userid='".$_GET['userid']."' WHERE id='".$maxphotoid."'"); } else { } }
zdjęcie po zeskalowaniu znacznie się zmniejsza, a max ilość miejsca na galerię dla jednego użytkownika to 10MB. Chciałabym odczytać wielkość pliku po zeskalowaniu, żeby uniknąć sytuacji, że plik wysyłany jest na serwer, po czym dopiero sprawdza ile w sumie zdjęcia zajmuja miejsca i w razie prekroczenia go trzeba usuwać wgrany plik i dane z bazy - za duże obciążenie dla strony...