Изменил функцию img_resize
вставил туда вместо мутной проверки на присоединение MIME-типа
обыкновенный CASE, который проверяет по типу картинки какую именно функцию вызывать
function img_resize($src, $out, $width, $height, $color = 0xFFFFFF, $quality = 100)
{
// Если файл не существует
if (!file_exists($src)) {
print 'error resize, file not load';
}
// Получаем массив с информацией о размере и формате картинки (mime)
// Исходя из формата (mime) картинки, узнаем с каким форматом имеем дело
//и какую функцию использовать для ее создания
$size = getimagesize($src);
$type = $size[2];
switch($type)
{
case "1": $picfunc = imagecreatefromgif($src); break;
case "2": $picfunc = imagecreatefromjpeg($src);break;
case "3": $picfunc = imagecreatefrompng($src); break;
default: $picfunc = imagecreatefromjpeg($src);
}
// Вычислить горизонтальное соотношение
$gor = $width / $size[0];
// Вертикальное соотношение
$ver = $height / $size[1];
// Если не задана высота, вычислить изходя из ширины, пропорционально
if ($height == 0) {
$ver = $gor;
$height = $ver * $size[1];
}
// Так же если не задана ширина
elseif ($width == 0) {
$gor = $ver;
$width = $gor * $size[0];
}
// Формируем размер изображения
$ratio = min($gor, $ver);
// Нужно ли пропорциональное преобразование
if ($gor == $ratio)
$use_gor = true;
else
$use_gor = false;
$new_width = $use_gor ? $width : floor($size[0] * $ratio);
$new_height = !$use_gor ? $height : floor($size[1] * $ratio);
$new_left = $use_gor ? 0 : floor(($width - $new_width) / 2);
$new_top = !$use_gor ? 0 : floor(($height - $new_height) / 2);
// $picsrc = $picfunc($src);
// Создание изображения в памяти
$picout = imagecreatetruecolor($width, $height);
// Заполнение цветом
imagefill($picout, 0, 0, $color);
// Нанесение старого на новое
imagecopyresampled($picout, $picfunc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]);
// Создание файла изображения
imagejpeg($picout, $out, $quality);
// Очистка памяти
imagedestroy($picfunc);
imagedestroy($picout);
$size_img["new_width"] = $new_width;
$size_img["new_height"] = $new_height;
$size_img["old_width"] = $size[0];
$size_img["old_height"] = $size[1];
return $size_img;
}