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

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

Универсальные функции создания и сохранения изображенияТем кто сталкивался с графикой в 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;
}
Рассказать друзьям:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*