Задача
Написать PHP-скрипт, который генерирует картинку.
Решение
Варианты
- Отдельный файл
- Модуль Drupal
Отдельный файл
Создадим в корне сайта файл с названием image.php. Попробуем вывести картинку с числом материалов размещенных на нашем сайте.
Код очень простой:
/*
Подключаем Drupal и загружаем его.
После вызова функции drupal_bootstrap доступны все функции
и системные переменные Drupal.
*/
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
//Отправляем браузеру заголовок типа контента: изображение в формате PNG.
drupal_set_header("Content-type: image/png");
//Создаем изображение
$image = imagecreate(88, 31);
//Определяем цвета фона и текста.
$background_color = imagecolorallocate($image, 2, 122, 198);
$text_color = imagecolorallocate($image, 255, 255, 255);
//Заливаем фон изображения.
imagefill($image, 0, 0, $background_color);
//Запрашиваем из таблицы нод количество материалов сайта.
$query = "SELECT COUNT(`nid`) FROM `{node}`";
$result = db_result(db_query ($query));
//Выводим результат в картинку
imagestring($image, 5, 5, 7, $result , $text_color);
//Отдаем картинку в браузер.
imagepng($image);
//Освобождаем ресурсы в оперативной памяти сервера.
imagedestroy($image);
Модуль Drupal
Пусть наш модуль называется testimagepng.
Реализуем в файле testimagepng.module хук меню, чтобы наша картинка получила путь на сайте.
$items['testimage.png'] = array(
'type' => MENU_CALLBACK,
'page callback' => 'testimagepng_image',
'access arguments' => array('access content'), );
return $items;
}
В том же файле разместим функцию testimagepng_image которая и будет генерировать картинку. Код почти совпадает с приведенным в первом способе.
drupal_set_header("Content-type: image/png");
$image = imagecreate(88, 31);
$background_color = imagecolorallocate($image, 2, 122, 198);
$text_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $background_color);
$query = "SELECT COUNT(`nid`) FROM `{node}`";
$result = db_result(db_query ($query));
imagestring($image, 5, 5, 7, $result , $text_color);
imagepng($image);
imagedestroy($image);
//Прерываем выполнение скриптов, чтобы Drupal не посылал в конце картинки своего вывода.
exit();
}
Достоинством этого метода генерации картинок состоит в том, что в HTML она вставляется при помощи кода, который ничем не отличается от кода для вставки обычного PNG-изображения в виде файла:
Картинка выглядит как статичный файл, но генерировать ее вы можете каким угодно способом внутри функции testimagepng_image().
Использованные материалы
- Генерация картинок на Drupal-сайте - оригинал.
- Drupal 6: index.php
- Drupal 6: captcha.module
- PHP: imagecreate()
- http://shaman.asiadata.ru/node/108










