
- •В.С. Романчик
- •Глава 2. Использование php.
- •Глава 3.
- •Введение
- •Возможности php.
- •Инструменты для разработки
- •Как php работает
- •Глава 1. Язык php Типы данных
- •Массивы и инициализация массивов
- •Объектно-ориентированное программирование в php Основные понятия ооп
- •Классы и Объекты
- •Конструкторы и деструкторы
- •Наследование классов и интерфейсов
- •Магические методы
- •Обработка ошибок
- •Ошибки php и директива error_reporting
- •Чтение и запись бинарных файлов
- •Работа с каталогами в рнр
- •MySql – сервер: бд1; бд2; бд3; бд4;
- •Язык запросов sql
- •Операция соединения.
- •Команды sql для создания баз данных и таблиц
- •Выборка данных из таблиц бд
- •Работа с MySql (сохранение данных в базе данных).
- •Работа с MySql занесение и получение данных из базы данных
- •Некоторые улучшения в организации работы с данными
- •Передача данных от клиента к серверу и от сервера клиенту
- •Клиентские методы http get, post, head
- •Обработка html-форм и передача переменных в скрипт.
- •Передача значений переменных по методу get
- •Ниже рассмотрен еще один пример передачи данных из клиентской формы на сервер по методу get
- •Передача данных на сервер по методу post
- •Php и обработка различных форм
- •Примеры обработки форм
- •Работа с e-mail
- •Отправка почты на php (Функция mail)
- •Cookies-наборы: сохраненное состояние
- •Сессии (Сеансы) Переменные сеанса
- •Отмена регистрации сеансовых переменных
- •Работа с сеансовыми переменными
- •Постоянные данные, использующие сеансы и cookie-наборы
- •Вывод графических данных с помощью рнр Основной способ создания изображений
- •Получение информации об изображении
- •Функции рисования прямых и кривых линий
- •Заливка изображений
- •Работа с палитрой изображения
- •Удаление и изменение цветов палитры
- •Создание прозрачности в изображениях
- •Рисование с помощью кистей
- •Использование специальных стилей для заливки
- •Использование шрифтов и вывод строк
- •Манипулирование и копирование изображений
- •Создаём графический информер на php
- •Слияние изображений с помощью gd
- •Включения удаленных файлов
- •Различные приложения и полезные скрипты на php
- •Пример. Определение типа и версии браузера
- •Генератор паролей на php
- •Время выполнения скрипта
- •Календарь
- •Загрузка файла от клиента на сервер
- •Работа с ftp на уровне php
- •Сбор статистики на php
- •Проверка ввода емайл
- •Чтение почты через Web-интерфейс
- •Разработка собственных листов рассылки
- •Рассылаем письма
- •Добавляем адреса в список рассылки
- •Редактирование адресов
- •Автоответчик
- •Почтовые функции в рнр
- •Задания для выполнения
- •Приложение 1. Протокол передачи гипертекстов http
- •Клиентские методы и заголовкиHttp
- •Указатель ссылки ("Referer")
- •Медиа-типы
- •Кодирование
- •Безопасность и авторизация
- •Кэширование содержимого http на стороне клиента
- •Http идентификация с php
- •Сжатие данных в протоколе http
- •Модель ajax: между загруженной в браузер страницей и сервером появляется прослойка - уровень ajax, который обеспечивает следующую последовательность выполнения приложения.
- •Класс xmlHttpRequest
- •Методы класса xmlHttpRequest
- •Свойства класса xmlHttpRequest
- •Создание экземпляра объекта xmlHttpRequest
- •Использование dom
- •Проблема с кешированием
- •Информируйте пользователя
- •Нет принципов написания кода
- •Аутентификация средствами php
- •Отделение клиентская части программы от серверной части и шаблоны
- •Использование шаблонов в php
- •Шаблоны подстановки
- •Создаем свои шаблоны в php
- •Теги, атрибуты, значения
- •Структура документа
- •Разрыв строки
- •Предварительное форматирование
- •Комментарии
- •Физическая и логическая разметка документа
- •«Физические» теги:
- •«Логические» теги:
- •Специальные символы
- •Графика
- •Формы html
- •Метатеги
- •Способы включения каскадных таблиц стилей
- •Синтаксис
- •Группирование
- •Наследование
- •Множественные классы.
- •Селекторы идентификаторов (id-селекторы).
- •Комментарии
- •Свойства шрифтов.
- •Свойства текста.
- •Представление документа в виде специальных областей – блоков
- •Отступы, поля, позиционирование.
- •Границы элементов.
- •Визуальные эффекты
- •Свойства списков
- •Свойства таблиц
- •Псевдоклассы
- •Псевдостили текста
- •Псевдоэлементы
- •Различные свойства
- •Css. Примеры
- •Типы данных
- •Ассоциированные массивы
- •Операторы
- •Подпрограммы
- •Приложение 11. Популярные веб-приложения и фреймворки
- •Фреймворки
Заливка изображений
Наряду с функциями imagerectangle(), imagepolygon() и imageellipse() расширение GD предлагает функции imagefilledrectangle () , imagefilledpolygon() и imagefilledellipse(). Каждая из этих трех функций имеет такой же синтаксис, как и рассмотренные их аналоги, однако заливают всю геометрическую форму определенным цветом.
Синтаксис функции imagefilledarc () имеет следующий вид:
imagefilledarc($img, $center_x, $center_y, $width, $height, $start_ang, $end_ang, $color, $style);
Дополнительный параметр $style представляет собой битовое поле, состоящее из одной или нескольких констант: IMG_ARC_PIЕ – Заливает сегмент наподобие сегмента секторной диаграммы; IMG_ARC_CHORD – Заливает сегмент до хорды дуги (то есть, до линии, соединяющей начало и конец дуги); IMG_ARC_EDGED – Используется только вместе с IMG_ARC_NOFILL, чтобы очертить участок, который может быть залит чем-то наподобие IMG_ARC_PIE; IMG_SRC_NOFILL – Используется только вместе с IMG_ARC EDGED, чтобы определить, что сегмент нужно только очертить, но не заливать.
Пример построения секторной диаграммы с использованием функции imagefilledarc():
<?php
// create image //imagepr10
define("WIDTH", 400); define("HEIGHT", 400);
$pie_data = array (10, 5, 20, 40, 10, 15);
$image = imagecreatetruecolor(WIDTH, HEIGHT);
// allocate some solors
$white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$navy = imagecolorallocate($image, 0x00, 0x00, 0x80);
$cx=(int)WIDTH/2; $cy=(int)HEIGHT/2;
$a=WIDTH-20; $b=(int)$a/2;
$col=$white;
// make the 3D effect
imagefilledarc($image,$cx,($cx+20),$a,$b,0,360,$navy, IMG_ARC_PIE);
$langl = 0;
foreach($pie_data as $perc) {
$arclen = (360 * $perc) / 100;
imagefilledarc($image, $cx,$cy, $a,$b, $langl, ($langl+$arclen), $col ,IMG_ARC_PIE);
$langl += $arclen; $col=$col-20000;
}
// flush image
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
Последние две функции заливки, имеющиеся в расширении GD, позволяют заливать участки холста определенным цветом. Первая из этих функций, imagefill () на любом сплошном участке заменяет один цвет другим выбранным цветом. Синтаксис функции imagefill () выглядит следующим образом:
imagefill($img, Sx, Sy, Scolor);
$х и $y определяют местоположение заменяемого цвета, а параметр $color представляет индекс цвета в палитре, который будет использован для замены. Эту функцию можно применять для многих целей; например, в сценарии построения секторной диаграммы, для заливки каждого отдельного сектора различным цветом (сохраняя черную кромку между соседними секторами).
Альтернативная функция, которая обладает более широкими возможностями — это функция imagefilltoborder (). Ее синтаксис выглядит следующим образом:
imagefilltoborder($img,$х, Sy, Sborder, Scolor);
Эта функция выполнит заливку сплошного участка, определяемого не одним цветом, а цветом, определяемым параметром $border.
Работа с палитрой изображения
При работе с существующей палитрой может быть так, что требуемый цвет уже имеется в палитре. Для таких случаев расширение GD предлагает функцию imagecolorexact ():
imagecolorexact($img, $red, $green, $blue);
Функция imagecolorexact() возвращает индекс цвета в палитре, если этот цвет в точности соответствует выбранному цвету, иначе возвращает -1 . Для тех случаев, когда можно обойтись не точным соответствием, предлагается функция imagecolorclosest():
imagecolorclosest($img_r, Sred, $green, Sblue);
Эта функция возвращает индекс цвета в палитре, который наиболее всего соответствует требуемому цвету. Соответствие цвета определяется посредством отображения каждой тройки значений RGB цвета в палитре в трехмерной точке с координатами X, Y, Z (красный «Х, синий = Y, зеленый = Z). Затем таким же образом отображается требуемый цвет, и возвращается тот цвет, который математически оказывается наиболее близким х требуемому. Альтернативной функцией, которая обычно позволяет получить лучший результат (наиболее близкое совпадение), является функция сопоставления цвета на основе его оттенка и насыщенности белого и черного цветов — imagecolorclosesthwb():
imagecolorclosesthwb($img_r, $red, $green, $blue);
Для изображений, в которых нет "натуральных цветов" (изображения, в которых распределение цвета осуществлялось с помощью функции imagecreate(), а не imagecreatetruecolor ()), эта функция может вернуть значение -1, если ни один цвет еще не был распределен. А для изображений с натуральными цветами эта функция возвращает индекс требуемого цвета.
<?php //imagepr11.php
define("WIDTH", 200); define("HEIGHT", 200);
$img = imagecreate(WIDTH, HEIGHT);
$background = $white = imagecolorallocate($img,0xff, 0xff,0xff);
$black = imagecolorallocate($img, 0, 0, 0);
$red = imagecolorallocate($img, 0xFF, 0, 0);
$green = imagecolorallocate($img, 0, 0xff, 0);
$blue = imagecolorallocate($img, 0, 0, 0xFF);
imagefilledrectangle($img, 0, 0, WIDTH-1, HEIGHT-1, $black);
imagefilledrectangle($img, 20,20, WIDTH-1, HEIGHT-1, $red);
imagefilledrectangle($img, 40, 40, WIDTH-1, HEIGHT-1, $blue);
function getcolor($img, $red, $green, $blue) {
$color = imagecolorexact($img, $red, $green, $blue);
if($color == -1) {
$color = imagecolorallocate($img, $red, $green, $blue);
if($color == -1) {
$color = imagecolorclosest($img, $red, $green, $blue);
}
}
return $color;
}
header("Content-Type: image/png");
imagepng($img);
imagedestroy($img);
//$ncolor=getcolor($img, $red, $green, $blue);
//echo $ncolor;
//$ncolor=imagecolorresolve($img, $red, $green, $blue);
//echo $ncolor;
?>
Функция imagecolorresolve () решает ту же задачу, что и функция getcolor () из предыдущего примера. Синтаксис этой функции представлен ниже:
imagecolorresolve(Simg_r, Sred, Sgreen, Sblue);
Как и функция getcolor() из предыдущего примера, эта функция вернет наиболее точное соответствие требуемому цвету при первой попытке точного совпадения, распределения или близкого совпадения с предоставленным цветом.