Tak właśnie myślałem... Jak pisałem w pierwszym poście, miałem cichą nadzieję, że istnieje jakaś funkcja, która to załatwi za mnie.
Dziekują wszystkim za podpowiedzi.
Oto co napisałem:
<?php
$img_type = null;
function getImage($imgName)
{
if($ext == 'jpg' || $ext == 'jpeg')
{
$img = imagecreatefromjpeg($imgName);
$GLOBALS['img_type'] = IMG_JPEG;
}
else if($ext == 'gif')
{
$img = imagecreatefromgif($imgName);
$GLOBALS['img_type'] = IMG_GIF;
}
else if($ext == 'png')
{
$img = imagecreatefrompng($imgName);
$GLOBALS['img_type'] = IMG_PNG;
}
else
{
$img = null;
$GLOBALS['img_type'] = null;
}
return $img;
}
function saveImage($img, $name, $imgType)
{
switch($imgType)
{
case IMG_JPEG:
imagejpeg($img, $name);
break;
case IMG_GIF:
imagegif($img, $name);
break;
case IMG_PNG:
imagepng($img, $name);
break;
}
return $weight;
}
function resize($imgName, $size)
{
if(!($img = getImage($imgName)))
{
echo(\"Nie mogę otworzyć pliku: $imgName\"); return false;
}
$img_w = imagesx($img);
$img_h = imagesy($img);
$ratio = $img_w / $img_h;
if($ratio > 1)
{
$new_img_w = $size;
$new_img_h = ($size / $ratio);
}
else
{
$new_img_w = ($size * $ratio);
$new_img_h = $size;
}
$tempImg = imagecreatetruecolor($new_img_w, $new_img_h);
imagecopyresized($tempImg, $img, 0, 0, 0, 0, $new_img_w, $new_img_h, $img_w, $img_h);
saveImage($tempImg, $imgName, $GLOBALS['img_type']);
}
/*******************************************************************/
// do celów testowych wstawiłem dane:
$fileupload_name = 'img.jpg';//- nazwa pliku załadowanego na serwer
$weight = filesize($fileupload_name);// - początkowy rozmiar pliku
$file_size_ind = 102400;// - makszymalny rozmiar pliku w B (bytes)
/*******************************************************************/
$img = getImage($fileupload_name);
$img_x = imagesx($img);
$img_y = imagesy($img);
$size = ($img_x > $img_y) ? $img_x : $img_y;
$i=0;
While ($weight > $file_size_ind)
{
$i++;
$img = getImage($fileupload_name);
$img_x = imagesx($img);
$img_y = imagesy($img);
$size = round((($img_x > $img_y) ?
$img_x : $img_y) * 0
.9
, 0
); resize($fileupload_name, $size);
}
echo (\"Ilość pętli: \" . $i . \"<br>\"); echo ('<center><IMG SRC=\"' . $fileupload_name . '\"><br>'); echo ('Plik ma rozmiar: ' . filesize($fileupload_name) . ' B<br>'); $img = getImage($fileupload_name);
echo ('i wymiary: ' . imagesx
($img) . 'x' . imagesy
($img) . '</center>'); ?>
Działa prwaidłowo ale jeśli ktoś miałby ochotę polepszyć go to proszę o komentarz.