Велика частина вмісту web-ресурсів сьогодні динамічно формується серверними скриптами. Але подібним чином виводиться переважно текстова інформація (розмітка сторінок, таблиці стилів, карта сайту). Зображення, музика, відео, архіви, як правило, розміщені на сервері в вигляді статичних файлів. Втім, іноді виникає необхідність формувати за допомогою сценарію і подібні дані. Так, якщо потрібно виводити статичну картинку, її цілком можна цілком вкласти в скрипт.
Вам знадобиться
— можливість створення або редагування серверних сценаріїв.
Інструкція
- Вставте дані картинки в скрипт у вигляді тексту, що є частиною програмного коду. Використовуйте найбільш зручні структури даних та синтаксичні конструкції. Вибір зазвичай визначається можливостями застосовуваного мови програмування. Так, у багатьох випадках зручно вставити картинку в скрипт у вигляді звичайної рядки символів, вміст якої є дані зображення, закодовані алгоритмом начебто Base64. В PHP це може виглядати наступним чином (картинка розміром 2×2 пікселя в форматі 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 MYH: i: s»). «GMT»);
- Сформуйте тіло HTTP-відповіді сервера, що представляє собою дані картинки. Використовуйте функції або методи об’єктів, що забезпечують висновок бінарних даних без їх додаткової обробки. Наприклад:
printf («% s ‘, $ text);