Значение рекламы в наше время переоценить довольно сложно: на каждом сайте пестрят разноцветными огнями и живут своей жизнью множество баннеров. Типичный баннер представляет собой несколько картинок, поочередно сменяющих друг друга, притом информация, отображаемая баннером, как правило статична. Информер отличается от баннера тем, что предоставляет информацию, которая может с течением времени динамически изменяться в пределах того же информера. Как видите, вещь в web-хозяйстве полезная.
Для начала определим части, из которых будет состоять наш информер:
• сама информация и место ее хранения;
• сценарий, который будет извлекать информацию из места ее хранения и формировать графическое отображение этой информации;
• код, который позволит вашим клиентам встроить у себя на странице сгенерированный информер.
Простоты ради предлагаю в качестве хранилища использовать обычный текстовый файл (source.txt). Для примера можно разместить в нем информацию о котировках валют в следующем виде:
EUR:6.5
USD:5.4
RUS:0.7
Здесь представлено название валюты и цена в гривнах за единицу этой валюты.
Далее переходим к написанию самого сценария. Но для начала необходимо выбрать язык, на котором он будет написан. В последнее время все большее распространение получает язык PHP, вот я и решил на нем остановить выбор.
Итак, создадим файл img.php, в котором будет размещаться код сценария.
В первую очередь необходимо прочитать наши данные — для этого откроем файл source.txt для чтения:
@ $file=fopen('source.txt', 'r');
if (!$file) {
echo "<b>Error: File not open. Please try
again later.</b>";
exit; }
Данный фрагмент кода при помощи функции fopen открывает текстовый файл на чтение и в случае успешного открытия возвращает указатель на файл, который сохраняется в переменной $file. Если же открыть файл не удалось, то возвращается значение false. Далее следует код, обрабатывающий эту ситуацию, — выводится сообщение об ошибке и происходит выход из сценария.
Далее создадим холст рисунка и определим пять цветов, которые будут использоваться для дальнейшей прорисовки:
$im=ImageCreate(140, 100);
$white_black=ImageColorAllocate($im,254,254,
254);
$white=ImageColorAllocate($im,255,255,255);
$black=ImageColorAllocate($im,0,0,0);
$blue=ImageColorAllocate($im,87,84,255);
$blue_light=ImageColorAllocate($im,0,206,255);
Здесь функция ImageCreate() создает пустой прямоугольник, в нее передается два аргумента. Первый из них является шириной нового изображения, а второй — высотой. Функция возвращает идентификатор нового изображения.
Функция ImageColorAllocate() задает цвет. Ей необходимо передать идентификатор изображения и RGB-составляющие цвета. Функция возвращает идентификатор цвета.
Определим три переменных:
$data=array();
$Y=10;
$Y1=13;
Далее следует цикл, в котором производится построчное чтение данных из текстового файла и прорисовка самого изображения:
while (!feof($file)) {
$string=fgets($file, 10);
$data=explode(':', $string);
$price=($data[1]*10)+35;
ImageFilledRectangle($im, 35, $Y, $price,
$Y+20, $blue_light);
ImageRectangle($im, 35, $Y, 135, $Y+20,
$black);
ImageString($im, 4, 4, $Y1, $data[0], $blue);
ImageString($im, 4, 75, $Y1, trim($data[1]),
$black);
$Y+=30;
$Y1+=30;
}
Здесь используется цикл while для считывания из файла до тех пор, пока не будет достигнут его конец. Проверка на наличие конца файла осуществляется при помощи функции feof().
Функция fgets() используется для считывания из файла по одной строке. Ей передается указатель на файл и число символов, которые необходимо считать за раз. Она возвращает строку.
Функция explode() разбивает строку на две части по символу-разделителю и возвращает массив. Нулевым элементом массива является название валюты, а первым — цена в гривнах.
Функция ImageFilledRectangle() рисует закрашенный прямоугольник. Ей передается идентификатор изображения, координаты относительно начала холста и идентификатор цвета.
Функция ImageRectangle() рисует рамку квадрата. Ей передаются те же параметры, что и функции ImageFilledRectangle().
Функция ImageString() выводит текстовую строку. Ей передается идентификатор изображения, размер шрифта, координаты начальной точки текста X и Y, непосредственно текст и цвет.
Функция trim() убирает пробелы в начале и в конце строки.
После завершения цикла происходит закрытие файла при помощи функции fclose().
Далее необходимо вывести изображение в браузер. Для этого сначала необходимо сообщить web-браузеру при помощи функции Header(), что будет выводиться именно изображение. Затем выводим само изображение, вызывая функцию ImagePng($im). Ей предается идентификатор изображения:
Header("Content-type: image/png");
ImagePng($im);
После завершения работы с изображением необходимо освободить ресурсы, уничтожив идентификатор изображения:
ImageDestroy($im);
Поскольку заголовок может быть переслан лишь один раз, и это единственный способ сообщить браузеру, что передается изображение, вставить созданную картинку можно следующим кодом:
<a href='http://www.any.domen.ru/'><img
src='img.php' border=1></a>
Удачи!