Как в скрипт вставить картинку?
3 ноября 2014 г. Просмотров: 751
Большая часть содержимого web-ресурсов сегодня динамически формируется серверными скриптами. Но подобным образом выводится преимущественно текстовая информация (разметка страниц, таблицы стилей, карта сайта). Изображения, музыка, видео, архивы, как правило, размещены на сервере в виде статических файлов. Впрочем, иногда возникает необходимость формировать при помощи сценария и подобные данные. Так, если нужно выводить статическую картинку, ее вполне можно целиком вставить в скрипт. Вставьте данные картинки в скрипт в виде текста, являющегося частью программного кода. Используйте наиболее удобные структуры данных и синтаксические конструкции. Выбор обычно определяется возможностями применяемого языка программирования. Так, во многих случаях удобно вставить картинку в скрипт в виде обычной строки символов, содержимое которой представляет собой данные изображения, закодированные алгоритмом вроде Base64. В PHP это может выглядеть следующим образом (картинка размером 2x2 пикселя в формате GIF):$str = 'R0lGODlhAgACAIAAAAAAAP///yH5BAAA'. 'AAAALAAAAAACAAIAAAIDDBAFADs='; Также часто используются литералы массивов. Подготовьте изображение к выводу. Если нужно, осуществите декодирование исходной информации. Вы должны получить буфер, содержащий бинарные данные картинки. К примеру, на языке PHP декодирование строки, приведенной в первом шаге, может выглядеть так:$text = base64_decode($str); В заголовок HTTP-ответа сервера добавьте поле, содержащее данные о длине тела ответа (размере выводимой картинки). Объем определите, используя функции или методы, возвращающие длину массивов, строк, и т.д. Например:header('Content-length: '.strlen($text)); Добавьте в заголовок HTTP-ответа сервера поле, указывающее на mime-тип передаваемого содержимого. Например:header('Content-type: image/gif');Тип содержимого должен быть уже известен (определен на основе формата исходной картинки). Если необходимо форсировать сохранение картинки вместо ее отображения браузером, добавьте соответствующее поле в заголовок ответа:header("Content-Disposition: attachment; filename=my_image.gif"); Если нужно избежать кеширования изображения браузером, введите в HTTP-ответ поля Pragma и cache-Control с соответствующими значениями:header("Pragma: no-cache");header("Cache-Control: no-cache, must-revalidate, no-store");header("Cache-Control: pre-check=0, post-check=0", false);Также стоит отдавать даты последней модификации и истечения срока действия ресурса. При этом вторая из них должна являться более поздней:header("Expires: Mon, 4 Jan 1993 00:00:01 GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); Сформируйте тело HTTP-ответа сервера, представляющее собой данные картинки. Используйте функции или методы объектов, обеспечивающие вывод бинарных данных без их дополнительной обработки. Например:printf('%s', $text);
Оцените статью!
Вам понадобится
- - возможность создания или редактирования серверных сценариев.