Czy istnieje możliwość odczytania wielkości przeskalowanego pliku zanim zostanie on zapisany na serwerze? ew. jakiś zapis w pamięci tymczasowej?
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."'");
echo 'zdjęcie zostało wgrane :)<br>'.$file; }
else
{
echo 'nieobslugiwany format pliku '.substr($_FILES['obraz1']['name'], -3
); }
}
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...