[Решено] Функция не обрабатывает файл с расширением JPG

Статус
В этой теме нельзя размещать новые ответы.

Sunday

Cōgitō ergō sum
Регистрация
13 Дек 2009
Сообщения
823
Реакции
342
Есть функция, которая работает нормально с расширениями png, gif, jpeg. Но если ей подсунуть файл с расширением jpg, вместо jpeg, то не работает нифига :conf:
Кто может подсказать, что за нафиг?
PHP:
function img_resize($src,$dest,$width,$tolarge,$bgcolor,$ext,$imgwidth,$imgheight,$logomerge){
if(!file_exists($src))return false;
$icfunc="imagecreatefrom".$ext;
if(!function_exists($icfunc))return false;
if($tolarge!='1' && $imgheight<$width)$width=$imgheight;
$x_ratio=$width/$imgheight;
$y_ratio=$width/$imgwidth;
$ratio=min($x_ratio,$y_ratio);
$use_x_ratio=($x_ratio==$ratio);
$new_width=$use_x_ratio?$width:floor($imgheight*$ratio);
$new_height=!$use_x_ratio?$width:floor($imgwidth*$ratio);
$isrc=$icfunc($src);
if($bgcolor!=0){
$new_left=$use_x_ratio?0:floor(($width-$new_width)/2);
$new_top=!$use_x_ratio?0:floor(($width-$new_height)/2);
$nn_width=$nn_height=$width;
$bgc=$bgcolor;
}else{
$new_left=0;
$new_top=0;
$nn_width=$new_width;
$nn_height=$new_height;
$bgc=0xFFFFFF;
}
$idest=imagecreatetruecolor($nn_width,$nn_height);
imagefill($idest,0,0,$bgc);
imagecopyresampled($idest,$isrc,$new_left,$new_top,0,0,$new_width,$new_height,$imgheight,$imgwidth);
if($logomerge=="1"){
$mergelogo=$_SERVER['DOCUMENT_ROOT'].$GLOBALS['p']."/images/logo_merge/logoj.gif";
if(file_exists($mergelogo)){
$size_logo=getimagesize($mergelogo);
if($size_logo[2]==1)$logo=imagecreatefromgif($mergelogo);
elseif($size_logo[2]==2)$logo=imagecreatefromjpeg($mergelogo);
elseif($size_logo[2]==3)$logo=imagecreatefrompng($mergelogo);
if(@$logo){
if($nn_width>($size_logo[0]+50)&&$nn_height>($size_logo[1]+50)){
  $coordmerge_x=$nn_width-($size_logo[0]+20);
  $coordmerge_y=$nn_height-($size_logo[1]+20);
  imagecopymerge($idest,$logo,$coordmerge_x,$coordmerge_y,0,0,$size_logo[0],$size_logo[1],100);
}} else {return false;}
} else {return false;}
}
if($ext=="gif")imagegif($idest,$dest);
elseif($ext=="png")imagepng($idest,$dest);
else imagejpeg($idest,$dest,100);
imagedestroy($isrc);
imagedestroy($idest);
return true;
}
 
Есть imagecreatefromgif,
есть imagecreatefromjpeg,
есть imagecreatefrompng.
Но нет imagecreatefromjpg. Естественно срабатывает if(!function_exists($icfunc))return false;
Попробуйте перед if(!function_exists($icfunc))return false; добавить
if($ext == "jpg") $ext = "jpeg";
Особо не вникал, но вроде как должно помочь.
 
Спасибо, только не перед
PHP:
if(!function_exists($icfunc))return false;
А перед
PHP:
$icfunc="imagecreatefrom".$ext;
Мог бы и сам разобраться, просто не вник :confused:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху