[ miljakovic @ 19.12.2016. 23:45 ] @
trazio sam po forumu ali nisam nasao resenje za jedan problem.

koristim ovaj program za promenu velicine slike

function Img_Resize($path) {

$x = getimagesize($path);
$width = $x['0'];
$height = $x['1'];

$rs_width = $width / 2;
$rs_height = $height / 2;

$img = imagecreatefromstring($path);

$img_base = imagecreatetruecolor($rs_width, $rs_height);
imagecopyresized($img_base, $img, 0, 0, 0, 0, $rs_width, $rs_height, $width, $height);

$path_info = pathinfo($path);
switch ($path_info['extension']) {
case "gif":
imagegif($img_base, $path);
break;
case "jpeg":
imagejpeg($img_base, $path);
break;
case "png":
imagepng($img_base, $path);
break;
}

}

medjutim, problem je sto su mi slike koje postavljam u formatu jpg a ne jpeg. kad primenim imagejpeg(...) slike budu prebacene u ekstenziju jpeg ali umesto slike se pojavljuje samo crna pozadina. Inace, program preuzima slike iz forme i hocu da ih program prebaci na server kad ih neki korisnik ucita. To sve radi lepo, ali neke slike budu jako velike a meni je potrebno najvise 800x600. Ovaj gore primer je samo da prepolovi sliku.

kako da resim ovaj problem???
hvala unapred svima na savetima
[ Predrag Supurovic @ 20.12.2016. 06:02 ] @
jpg i jepg je isto, samo se razlikuje ekstenzija u imenu datoteke. jpg se kostisti jer je na DOS-u bilo ograniceno da esktenzija ima samo tri slova. Kasnije je ogranicenje ukinuto ali je naziv ostao.

[ agvozden @ 20.12.2016. 08:04 ] @
zato se 'switch' ne radi prepoznavanjem ekstenzije, vec se koristi getimagesize(), npr:
list ($img_width, $img_height, $img_type) = @ getimagesize($image);
ovako dobijes i dimenziju izvorne slike.
a onda:
switch ($img_type) {
case '1' : //'image/gif':
$source = imagecreatefromgif($image);
break;
case '2' : //'image/jpeg':
$source = imagecreatefromjpeg($image);
break;
case '3' : //'image/png':
$source = imagecreatefrompng($image);
break;
default :
...
break;
}