Универсальные функции создания и сохранения изображения. Введение
Тем кто сталкивался с графикой в php с использованием GD, наверняка, приходилось для работы с разными форматами изображений, использовать разные php функции при создании и сохранении/выводе в браузер изображения. Например, при сохранении картинки в формате jpg используется функция imagejpeg, для png — imagepng , для gif — imagegif. Так же обстоят дела и с функциями создания изображения разных форматов. Это создает некоторые проблемы в случаях, когда на обработку может попасть картинка любого формата. Ниже приведенный пример поможет решить сложившуюся проблему.
Универсальные функции создания и сохранения изображения. Код
$source = "test.jpg";
// $source = "test.jpeg";
// $source = "test.png";
// $source = "test.gif";
// получаем функцию, для создания изображения
$imageCreateFunc = get_image_create_func($source);
// получаем функцию, для сохранения/вывода изображения
$imageSaveFunc = get_image_save_func($source);
// загружаем исходную картинку
$pic = $imageCreateFunc($source);
// заголовок для браузера
header("Content-Type: image/jpeg");
// выводим результат в браузер
$imageSaveFunc($pic);
// очищаем память
imagedestroy($pic);
// получаем функцию, для создания изображения
function get_image_create_func($source){
// получаем данные о файле
$size = @getimagesize($source);
// если ни чего не получили
if(!$size) return false;
// определяем формат картинки
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1));
// при необходимости, меняем jpg на jpeg
if($format == "jpg") $format = "jpeg";
// создаем функцию, для полученного формата изображения
$func = "imagecreatefrom" . $format;
// проверяем существование полученной функции
if(!function_exists($func)) return false;
// возвращаем результат
return $func;
}
// получаем функцию, для сохранения/вывода изображения
function get_image_save_func($source){
$size = @getimagesize($source);
if(!$size) return false;
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1));
if($format == "jpg") $format = "jpeg";
$func = "image" . $format;
if(!function_exists($func)) return false;
return $func;
}
