Вам понадобится
- - возможность создания или редактирования серверных сценариев.
Инструкция
1
Вставьте данные картинки в скрипт в виде текста, являющегося частью программного кода. Используйте наиболее удобные структуры данных и синтаксические конструкции. Выбор обычно определяется возможностями применяемого языка программирования. Так, во многих случаях удобно вставить картинку в скрипт в виде обычной строки символов, содержимое которой представляет собой данные изображения, закодированные алгоритмом вроде Base64. В PHP это может выглядеть следующим образом (картинка размером 2x2 пикселя в формате GIF):$str = 'R0lGODlhAgACAIAAAAAAAP///yH5BAAA'. 'AAAALAAAAAACAAIAAAIDDBAFADs='; Также часто используются литералы массивов.
2
Подготовьте изображение к выводу. Если нужно, осуществите декодирование исходной информации. Вы должны получить буфер, содержащий бинарные данные картинки. К примеру, на языке PHP декодирование строки, приведенной в первом шаге, может выглядеть так:$text = base64_decode($str);
3
В заголовок HTTP-ответа сервера добавьте поле, содержащее данные о длине тела ответа (размере выводимой картинки). Объем определите, используя функции или методы, возвращающие длину массивов, строк, и т.д. Например:header('Content-length: '.strlen($text));
4
Добавьте в заголовок HTTP-ответа сервера поле, указывающее на mime-тип передаваемого содержимого. Например:header('Content-type: image/gif');Тип содержимого должен быть уже известен (определен на основе формата исходной картинки).
5
Если необходимо форсировать сохранение картинки вместо ее отображения браузером, добавьте соответствующее поле в заголовок ответа:header("Content-Disposition: attachment; filename=my_image.gif");
6
Если нужно избежать кеширования изображения браузером, введите в 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");
7
Сформируйте тело HTTP-ответа сервера, представляющее собой данные картинки. Используйте функции или методы объектов, обеспечивающие вывод бинарных данных без их дополнительной обработки. Например:printf('%s', $text);
Видео по теме