Универсальные функции создания и сохранения картинок

Как, наверняка, уже стало ясно из предыдущих рецептов, для работы с разными форматами изображений, приходится использовать разные 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"); 
103 
 
// выводим результат в браузер 
$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; 
}


104

В приведенном примере использовалась ранее не описанная
функция – function_exists. Она проверяет, определена функция
или нет.
Теги:
imagejpeg, imagegif, imagepng, function_exists
Добавлено: 29 Марта 2018 07:30:05 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...