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