- •Содержание:
- •Математические функции : Функции округления
- •Математические функции : Случайные числа
- •Математические функции : Минимум и максимум
- •Математические функции : Степенные функции
- •Математические функции : Тригонометрия
- •Математические функции : Функции повышенной точности BCMath
- •Математические функции : Функции GMP. Арифметика
- •Математические функции : Функции GMP. Математика
- •Математические функции : Функции GMP
- •Математические функции : Функции GMP. Значения функции GMP
- •Математические функции : Функции GMP. Бинарные операции
- •Работа с массивами : Создание массива
- •Работа с массивами : Сортировка массивов
- •Работа с массивами : Курсор массива
- •Работа с массивами : Ключи и значения
- •Работа с массивами : Комплексная замена в строке
- •Работа с массивами : Работа с несколькими массивами
- •Работа с массивами : Получение и удаление части массива
- •Работа с массивами : Вставка/удаление элементов
- •Работа с массивами : Переменные и массивы
- •Строковые функции : Функции отрезания пробелов
- •Строковые функции : Поиск в тексте
- •Строковые функции : Функции сравнения
- •Строковые функции : Форматирование и вывод строк
- •Строковые функции : Составление/разбиение строк
- •Строковые функции : Работа с блоками текста
- •Строковые функции : Функции для преобразования символов
- •Строковые функции : Функции изменения регистра
- •Строковые функции : Установка локали (локальных настроек)
- •Строковые функции : Преобразование кодировок
- •Строковые функции : Функции форматных преобразований
- •Строковые функции : Функции URL
- •Строковые функции : Работа с бинарными данными
- •Строковые функции : Строковые суммы и хеш-функции
- •Символические ссылки. Жесткие ссылки
- •Функции даты и времени
- •Логические функции определения типа переменной
- •Функции переменных
- •Функции для работы с функциями
- •Календарные функции
- •Работа с файлами : Открытие файла
- •Работа с файлами : Закрытие файла
- •Работа с файлами : Чтение и запись
- •Работа с файлами : Положение указателя текущей позиции
- •Работа с файлами : Функции для определения типов файлов
- •Работа с файлами : Определение параметров файла
- •Работа с файлами : Функции для работы с именами файлов
- •Работа с файлами : Функции манипулирования целыми файлами
- •Работа с файлами : Другие функции
- •Функции для работы с каталогами : Манипулирование каталогами
- •Функции для работы с каталогами : Работа с записями
- •FTP : Работа с FTP-сервером
- •FTP : Работа файлами
- •Функции IMAP
- •Функции SNMP
- •Функции Vmailmgr
- •Сетевые функции
- •Отслеживание и обработка ошибок : Введение
- •Отслеживание и обработка ошибок : Функции обработки ошибок
- •Управление сессиями : Имя группы сессии
- •Управление сессиями : Идентификатор сессии
- •Управление сессиями : Другие функции
- •Управление сессиями : Обзор обработчиков
- •Управление сессиями : Про сессии и Cookies
- •Работа с WWW : Установка заголовков ответа
- •Работа с WWW : Получение заголовков запроса
- •Работа с WWW : Работа с Cookies
- •Работа с WWW : SSI и функция virtual()
- •Управление выводом : Введение
- •Управление выводом : Функции управления выводом
- •Управление исполнением сценария PHP : Дополнительные функции
- •Почтовые функции
- •Функции запуска программ
- •Функции динамической загрузки
- •Информационные функции
- •База данных MySQL : Работа с базами данных
- •Базы данных MySQL : Обработка результатов запроса
- •PDF-документы : Введение
- •PDF-документы : Открытие документа
- •PDF-документы : Работа с текстом
- •PDF-документы : Установка масштаба и системы координат
- •PDF-документы : Черчение и заполнение фигур
- •PDF-документы : Размещение рисунков
- •PDF-документы : Стиль документа
Теперь к только что вставленной записи можно обратиться, используя идентификатор $id:
$r=mysql_query("select * from Таблица where id=$id"); $Row=mysql_fetch_array($r);
mysql_data_seek
Устанавливает указатель текущей строки.
Синтаксис :
int mysql_data_seek(int result, int row_number)
Эта функция устанавливает указатель текущей строки в результате result в позицию row_number, так что следующий вызов mysql_fetch_row() и mysql_fetch_array() вернет значения полей именно этой строки. Нумерация записей ведется с 0.
Возвращает false в случае ошибки или если строки кончились.
mysql_free_result
Уничтожает набор записей.
Синтаксис :
int mysql_free_result(int result)
Данная функция освобождает память, занимаемую набором записей result, возвращенным запросом.
Эта функция необходима, когда нужно экономить память, т.к. PHP автоматически освобождает память при завершении сценария.
Базы данных MySQL : Обработка результатов запроса
mysql_result
Получение определенного поля результата.
Синтаксис :
int mysql_result(int result, int row [, mixed field])
Функция возвращает значение поля field в строке результата с номером row.Параметр field может задавать не только имя поля, но и его номер - позицию, на которой столбец "стоял" при создании таблицы, а также полное имя поля вида: "имя_таблицы.имя_поля". Тем не менее, рекомендуется везде, где это только возможно,использовать именно имена полей.
Функция универсальна: с ее помощью можно "обойти" весь результат по одной ячейке. И хотя это не возбраняется, но делать, однако, не рекомендуется, т.к. mysql_result() работает довольно медленно.
mysql_fetch_array
Извлекает из результата очередную запись и помещает ее в ассоциативный массив.
Синтаксис :
array mysql_fetch_array(int result [, int result_type])
Функция mysql_fetch_array() возвращает очередную строку результата в виде
ассоциативного массива, где каждому полю сопоставлен элемент с ключом, совпадающим с именем поля. Дополнительно в массив записываются элементы с числовыми ключами и значениями, соответствующими величинам полей с этими индексами. В возвращаемом массиве они размещаются сразу за элементами с "обычными" ключами.
Параметр result_type задает вид возвращаемого массива и может принимать одно из следующих значений: MYSQL_NUM, MYSQL_ASSOC, MYSQL_BOTH (по умолчанию).
Может возникнуть вопрос: зачем вообще нужны числовые индексы. Ответ прост: дело в том, что в результате выборки в действительности могут присутствовать поля (фактически, колонки) с одинаковыми именами, но, соответственно, с различными индексами. Это происходит тогда, когда выборка в SELECT производится одновременно из нескольких таблиц.
mysql_connect($host, $user, $pass); $result=mysql_db_query("database", "select id, name from tabl"); while($row=mysql_fetch_array($result)) {
echo "id: ".$row["id"]."<BR>"; echo "id: ".$row[0]."<BR>";
echo "name: ".$row["name"]."<BR>"; echo "name: ".$row[1]."<BR>";
}; mysql_free_result($result);
mysql_fetch_row
Записывает запись в нумерованный массив.
Синтаксис :
array mysql_fetch_row(int result)
Функция возвращает массив-список со значениями полей очередной строки результата result. Если указатель текущей позиции результата был установлен за последней записью (то есть строки кончились), возвращается false. Текущая позиция сдвигается к следующей записи, так что очередной вызов mysql_fetch_row() вернет следующую строку результата.
Каждое поле записи сохраняется в нумерованном элементе массива. Нумерация начинается с 0.
$r=mysql_query("select * from OutTable where age<30"); while($Row=mysql_fetch_row($r)) {
// обрабатываем строку $Row
}
Как видим, цикл оборвется, как только строки закончатся, т.е. когда mysql_fetch_row() вернет false.
mysql_fetch_object
Получение записи в свойствах объекта.
Синтаксис :
object mysql_fetch_object(int result)
Функция возвращает объект, в свойствах которого находятся поля текущей записи. В случае, если записи кончились, возвращает false.
mysql_connect($host, $user, $pass); $result=mysql_db_query("database", "select * from table"); while($rows=mysql_fetch_object($result)) {
echo $rows->id; echo $rows->name;
};
mysql_fetch_lengths
Возвращает длину элемента записи.
Синтаксис :
array mysql_fetch_lengths(int result)
Функция mysql_fetch_lengths() возвращает длину значения, полученного при помощи функций mysql_fetch_row(), mysql_fetch_array() или mysql_fetch_object().
Например, в следующем примере:
$arr=mysql_fetch_row($result); $len=mysql_fetch_lengths($result);
массив $len будет содержать длину соответствующих элементов массива $arr, т.е. $len[0]=strlen(arr[0]) и т.д.
mysql_fetch_field
Возвращает информацию о свойствах объекта и о поле записи.
Синтаксис :
object mysql_fetch_field(int result [, int field_offset])
В необязательном параметре field_offset задается номер поля, свойства которого мы хотим получить. Если этот параметр не указан, при каждом вызвове функции mysql_fetch_field() возвращаются свойства следующего поля из набора записей result.
Возвращаемый объект имеет следующие свойства:
•name - имя поля
•table - имя таблицы, которой принадлежит поле
•max_length - максимальная длина поля
•not_null - 1, если полю разрешено пустое значение
•primary_key - 1, если поле является ключевым
•unique_key - 1, если в поле допускаются только уникальные значения
•multiple_key - 1, если в поле допустимо иметь повторяющиеся значения
•numeric - 1, если поле числовое
•blob - 1, если поле имеет тип BLOB
•type - тип поля
•unsigned - 1, если поле числовое беззнаковое
•zerofill - 1, есле поле заполняется нулями
mysql_connect($host,$user,$pass); $result=mysql_db_query("database", select * from table"); for($i=0;$i<mysql_num_fields($result);$i++) {
echo "Свойства поля $i:<BR>"; $param=mysql_fetch_field($result);
if(!$param) echo "Нет информации о свойствах!"; echo "<PRE>
name:
table: max_length: not_null: primary_key: unique_key: multiple_key: numeric: blob:
type:
unsigned:
zerofill:
</PRE>";
}
mysql_field_seek
Производит перемещение курсора к указанному полю.
Синтаксис :
int mysql_field_seek(int result, int field_offset)
Данная функция является излишней. Следующие фрагменты будут эквивалентны:
$param=mysql_fetch_field($result, field_offset);
и
mysql_field_seek($result, field_offset); $param=mysql_fetch_field($result);
mysql_field_name
Возвращает имя поля.
Синтаксис :
string mysql_field_name(int result, int filed_index)
Функция mysql_field_name() возвращает имя поля, которое расположено в результате result с индексом filed_index (нумерация начинается с 0).
$result=mysql_query("SELECT id, name from table"); echo mysql_field_name($result,1); // Выведет: name
mysql_field_table
Возвращает имя таблицы, из которой было извлечено поле.
Синтаксис :
string mysql_field_table(int result, int field_offset)
Возвращает имя таблицы, из которой было извлечено поле со смещением field_offset в результате result.
mysql_field_len
Возвращает длину поля.
Синтаксис :
int mysql_field_len(int result, int filed_offset)
Функция возвращает длину поля в результате result. Поле, как обычно, задается указанием его смещения. Под длиной здесь подразумевается не размер данных поля в байтах, а тот размер, который был указан при его создании. Например, если поле имеет тип varchar и было создано (вместе с таблицей) с типом varchar(100), то для него будет возвращено 100.
mysql_field_type
Возвращает тип набора записей в результате.
Синтаксис :
string mysql_field_type(int result, int filed_offset)
Эта функция похожа на mysql_filed_name(), только возвращает не имя , а тип соответствующей колонки в результате. Им может быть, например, int, double, real и т.д.
mysql_connect($host,$user,$pass); mysql_select_db("mydb");
$result=mysql_query("SELECT * FROM tabl"); $fields=mysql_num_fields($result); $rows=mysql_num_rows($result);
$i=0; $table=mysql_field_table($result,$i);
echo "Таблица "$table" имеет $fields полей и $rows записей<BR>"; echo "Структура таблицы:<BR>";
while($i<$fields) { $type=mysql_field_type($result,$i); $name=mysql_field_name($result,$i); $len=mysql_field_len($result,$i); $flags=mysql_field_flags($result,$i);
echo $type." ".$name." ".$len." ".$flags."<BR>"; $i++;
}
mysql_field_flags
Эта функция возвращает флаги, которые были использованы при создании указанного поля в таблице.
Синтаксис :
string mysql_field_flags(int result, int field_offset)
Возвращаемая строка представляет собой набор слов, разделенных пробелами, так что вы можете преобразовать ее в массив при помощи функции explode():
$Flags=explode(" ",mysql_field_flags($r,$field_offset));
Поля записей в MySQL могут иметь следующие свойства-флаги:
"not_nul", "primary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum", "auto_increment", "timestamp".
mysql_list_fields
Возвращает список полей таблицы.
Синтаксис :
int mysql_list_fields(string dbname, string tblname [,int link_identifier])
Функция mysql_list_fields() возвращает информацию об указанной таблице tblname в базе данных bdname, используя идентификатор соединения link_identifier, если он задан (в противном случае - последнее открытое соединение). Возвращаемое значение - идентификатор результата, который может быть проанализирован обычными средствами. В случае ошибки возвращается -1, текс сообщения ошибки может быть получен обычным способом.
$link=mysql_connect($host,$user,$pass); $fields=mysql_list_fields("db1", "table", $link); $colums=mysql_num_fields($fields); // число полей в таблице
// Далее распечатаем имена всех полей таблицы for($i=0;$i<$colums;$i++) {
echo mysql_field_name($fields,$i)."<BR>";
}
mysql_num_fields
Эта функция возвращает число полей в одной строке результата, т.е. число колонок в результате.
Синтаксис :
int mysql_num_fields(int result)
В силу сказанного, функция позволяет определить горизонтальную размерность "двумерного массива результата".
mysql_errno
Возвращает номер последней ошибки.
Синтаксис :
int mysql_errno ([int link_identifier])
Данная функция возвращает номер последней зарегистрированной ошибки или 0, если ошибок нет.
Идентификатор link_identifier можно не указывать, если за время работы сценария было установлено только одно соединение.
mysql_connect("dbname");
echo mysql_errno().": ".mysql_error()."<BR>";
mysql_error
Возвращает сообщение об ошибке.
Синтаксис :
string mysql_error ([int link_identifier])
Эта функция возвращает строку, содержащую текст сообщения об ошибке или пустую строку, если ошибок небыло.
mysql_connect("dbname");
echo mysql_errno().": ".mysql_error()."<BR>";
Работа с изображениями и библиотека GD : Параметры изображения
Применение и установка
Здесь мы рассмотрим идею создания рисунков сценарием "на лету". Это очень может пригодиться при создании сценариев-счетчиков, графиков, картинокзаголовков, да и многого другого.
Для деятельности такого рода существует специальная библиотека под названием GD. Она содержит в себе множество функций (такие как рисование линий, растяжение/сжатие изображения, заливка до границы, вывод текста и т.д.), которые могут использовать программы, поддерживающие работу с данной библиотекой.
Поддержка GD включается при компиляции и установке PHP. Возможно, некоторые хостинг-провайдеры ее не имеют.
Для подключения модуля на вашем локальном диске нужно открыть в Блокноте файл php.ini из каталога с файлами Windows (обычно C:\Windows)
Затем:
1. Настройте следующий параметр: extension_dir=C:\Program Files\PHP4\extensions
Здесь мы уведомляем PHP, что модули он должен искать
вкаталоге C:\Program Files\PHP4\extensions.
2.Найдите закомментированную строку ;extension=php_gd.dll и разкомментируйте ее, т.е. уберите ; в начале.
3.Сохраните изменения в файле php.ini
imageTypes
Определение графических форматов, поддерживаемых PHP.
Синтаксис :
int imageTypes(void)
Функция возвращает битовую маску графических форматов, которые поддерживает данная версия библиотеки GD: IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP
<?php
if(imageTypes() && IMG_PNG) echo "формат PNG поддерживается"; ?>
GetImageSize
Определение размеров рисунка.
Синтаксис :
array GetImageSize(string filename [,array imageinfo])
Эта функция предназначена для быстрого определения в сценарии размеров (в пикселях) и формата рисунка, имя файла которого передано ей в первом параметре. Она возвращает список из четырех элементов. Первый элемент (с ключем 0) хранит ширину картинки в пикселях, второй (с ключем 1) - его высоту. Ячейка массива с ключем 2 определяется форматом изображения: 1, если это GIF, 2 в случае JPG, 3 для PNG и 4 - SWF. Следующий элемент, имеющий ключ 3, будет содержать после вызова функции строку примерно следующего вида: height=sx width=sy, где sx и sy - соответственно ширина и высота изображения. Это применение задумывалось для того, чтобы облегчить вставку данных о размере изображения в тег <img>, который может быть сгенерирован сценарием:
<?php $size_img=GetImageSize("img/image.jpg"); echo "<IMG src='img/image.jpg' $size_img>"; ?>
Если при обращении к функции был указан второй необязательный массив imageinfo, в него можно записать дополнительную информацию о файле. Это могут быть, например, различные маркеры JPG APP (внедренная информация). Функция iptcparse() позволяет конвертировать эти данные в читаемый вид:
<?php
$size_img=GetImageSize("img/image.jpg", &$info_arr); if(isset($info_Arr["APP13"])) {
$iptc = iptcparse($info_arr["APP13"]); var_dump($iptc);
};
?>
Данная функция не требует наличия библиотеки GD.
imageSX
Определение ширины рисунка.
Синтаксис :
int imageSX(int im)
Функция возвращает горизонтальный размер изображения, заданного своим идентификатором im, в пикселях.
imageSY
Определение высоты рисунка.
Синтаксис :
int imageSY(int im)
Функция возвращает вертикальный размер изображения, заданного своим идентификатором im, в пикселях.
read_exif_data
Чтение заголовков EXIF из файла JPEG.
Синтаксис :
array read_exif_data(string filename)
Параметр filename не может быть URL.
Функция возвращает ассоциативный массив, в котором индексами являются имена заголовков EXIF.
Заголовки EXIF обычно хранят информацию цифровых камер (в различном виде).
<?php
$exif = read_exif_data("img/file.jpg"); print_r($exif);
?>
Данный пример выведет что-то наподобие:
Array
(
[FileName] => file.jpg [FileDateTime] => 1064566998 [FileSize] => 31646
[CameraMake] => Eastman Kodak Company
[CameraModel] => KODAK DC265 ZOOM DIGITAL CAMERA (V01.00) [DateTime] => 2002:08:31 02:12:45
[Height] => 454 [Width] => 620 [IsColor] => 1 [FlashUsed] => 0 [FocalLength] => 8.0mm [RawFocalLength] => 8
[ExposureTime] => 0.004 s (1/250) [RawExposureTime] => 0.0040000001899898 [ApertureFNumber] => f/ 9.5 [RawApertureFNumber] => 9.5100002288818 [FocusDistance] => 16.66m [RawFocusDistance] => 16.659999847412 [Orientation] => 1
[ExifVersion] => 0200
)
Данная функция доступна, если подключена библиотека EXIF.
Для этого необходимо либо снять комментарий со строки ;extension=php_exif.dll в
файле windows\php.ini (должно быть extension=php_exif.dll), либо откомпилировать PHP с параметром --enable-exif.
Для работы этой функции библиотека GD не требуется.
imageInterlace
Установка черезстрочности.
Синтаксис :
int imageInterlace(int im [, int interlace])
Если в функции задан второй необязательный параметр interlace, и он равен 1, то рисунок im отображается черезстрочно, если равен 0, то последовательно.
Функция возвращает текущую установку черезстрочности.
gd_info
Возвращает информацию о библиотеке GD.
Синтаксис : array gd_info(void)
Функция возвращает массив, содержащий версию и параметры установленной библиотеки GD.
<?php $gd=gd_info(); echo "<pre>"; print_r($gd); echo "</pre>"; ?>
Приведенный пример выведет примерно следующее:
Array
(
[GD Version] => bundled (2.0.22 compatible) [FreeType Support] => 1
[FreeType Linkage] => with freetype [T1Lib Support] =>
[GIF Read Support] => 1 [GIF Create Support] => [JPG Support] => 1 [PNG Support] => 1 [WBMP Support] => 1 [XBM Support] => 1
[JIS-mapped Japanese Font Support] =>
)
image_type_to_mime_type
Возвращает Mime-Type типа изображения.
Синтаксис :
string image_type_to_mime_type( int imagetype)
Функция возвращает MIME-тип картинки, заданный константой в параметре imagetype.
<?php
header("Content-type: " . image_type_to_mime_type(IMAGETYPE_PNG)); ?>
Список констант и возвращаемых значений функции image_type_to_mime_type():
• IMAGETYPE_GIF - image/gif
•IMAGETYPE_JPEG - image/jpeg
•IMAGETYPE_PNG - image/png
•IMAGETYPE_SWF - application/x-shockwave-flash
•IMAGETYPE_PSD - image/psd
•IMAGETYPE_BMP - image/bmp
•IMAGETYPE_TIFF_II - image/tiff
•IMAGETYPE_TIFF_MM - image/tiff
•IMAGETYPE_JPC - application/octet-stream
•IMAGETYPE_JP2 - image/jp2
•IMAGETYPE_JPX - application/octet-stream
•IMAGETYPE_JB2 - application/octet-stream
•IMAGETYPE_SWC - application/x-shockwave-flash
•IMAGETYPE_IFF - image/iff
•IMAGETYPE_WBMP - image/vnd.wap.wbmp
•IMAGETYPE_XBM - image/xbm Данная функция не требует наличия библиотеки GD.
Работа с изображениями и библиотека GD : Манипулирование изображениями
imageCreate
Создание пустой картинки.
Синтаксис :
int imageCreate(int x, int y)
Создает пустую картинку размером x на y точек и возвращает ее идентификатор. После того, как картинка создана, вся работа с ней осуществляется именно через этот идентификатор, по аналогии с тем, как мы работаем с файлом через его дескриптор.
Пример:
Создание новой картинки при помощи GD и вывод ее в экран браузера:
<?php
header ("Content-type: image/png"); $im = @imagecreate (50, 100)
or die ("Не удается открыть новую картинку!"); $background_color = imagecolorallocate ($im, 255, 255, 255); $text_color = imagecolorallocate ($im, 233, 14, 91);
imagestring ($im, 1, 5, 5, "A Simple Text String", $text_color); imagepng ($im);
?>
imageCreateFromPng
Создание рисунка из файла PNG.
Синтаксис :
int imageCreateFromPng(string filename)
Эта функция загружают изображения из файла PNG в память и возвращает его идентификатор. Как и после вызова imageCreate(), дальнейшая работа с картинкой возможна только через этот идентификатор. При загрузке с диска изображение распаковывается и храниться в память уже в неупакованном формате, для того чтобы можно было максимально быстро производить с ним различные операции, такие как масштабирование, рисование линий и т.д.
Пример:
Пример нахождения ошибки при открытии графического файла.
function LoadPNG ($imgname) {
$im = @imagecreatefrompng ($imgname); /* Attempt to open */ if (!$im) { /* See if it failed */
$im = imagecreate (150, 30); /* Create a blank image */ $bgc = imagecolorallocate ($im, 255, 255, 255);
$tc = imagecolorallocate ($im, 0, 0, 0); imagefilledrectangle ($im, 0, 0, 150, 30, $bgc); /* Output an errmsg */
imagestring ($im, 1, 5, 5, "Error loading $imgname", $tc);
}
return $im;
}
imageCreateFromJpeg
Создание рисунка из файла JPEG.
Синтаксис :
int imageCreateFromJpeg(string filename)
Эта функция загружают изображения из файла в память и возвращают его идентификатор. Как и после вызова imageCreate(), дальнейшая работа с картинкой возможна только через этот идентификатор. При загрузке с диска изображение распаковывается и храниться в память уже в неупакованном формате, для того чтобы можно было максимально быстро производить с ним различные операции, такие как масштабирование, рисование линий и т.д.
imageCreateFromGif
Создание рисунка из файла GIF.
Синтаксис :
int imageCreateFromGif(string filename)
Эта функция загружают изображения из файла в память и возвращают его идентификатор. Как и после вызова imageCreate(), дальнейшая работа с картинкой возможна только через этот идентификатор. При загрузке с диска изображение распаковывается и храниться в память уже в неупакованном формате, для того чтобы можно было максимально быстро производить с ним различные операции, такие как масштабирование, рисование линий и т.д.
Стоит упомянуть, что GD начиная с версии 1.6 не поддерживает формат GIF. В связи с этим данная функция практически не используется.
imagePng
Функция выводит изображение в PNG-формате в любой браузер или в файл.
Синтаксис:
int imagePng(int im [, string filename])
Эта функция сохраняет изображение, заданное своим идентификатором и находящееся в памяти, на диск, или же выводят его в браузер.
Разумеется, вначале изображение должно быть загружено или создано при помощи функции imageCreate(), т.е. мы должны знать его идентификатор im.
Если аргумент filename опущен, то сжатые данные в соответствующем формате выводятся прямо в стандартный выходной поток, т.е. в браузер. Нужный заголовок Content-type при этом не выводится, ввиду чего нужно выводить его вручную при помощи Header().
Фактически, вы должны вызвать одну из трех команд, в зависимости от типа изображения:
Header("Content-type: image/png") для PNG.
Пример:
Пример использования функции imagepng():
<?php
$im = imagecreatefrompng ("test.png"); Header("Content-type: image/png") imagepng ($im);
?>
imageJpeg
Отсылка рисунка JPEG браузеру или сохранение его в файле.
Синтаксис:
int imageJPEG(int im [, string filename [, int quality]])
Эта функция сохраняет изображение, заданное своим идентификатором и находящееся в памяти, на диск, или же выводит его в браузер.
Разумеется, вначале изображение должно быть загружено или создано при помощи функции imageCreate(), т.е. мы должны знать его идентификатор im.
Если аргумент filename опущен, то сжатые данные в соответствующем формате выводятся прямо в стандартный выходной поток, т.е. в браузер. Нужный заголовок Content-type при этом не выводится, ввиду чего нужно выводить его вручную при помощи Header().
Фактически, вы должны вызвать одну из трех команд, в зависимости от типа изображения:
Header("Content-type: image/jpeg") для Jpeg
Третий необязательный параметр quality задает качество изображения (от 0 до
100).
<?php $im=imageCreateFromJPEG("img/file.jpg"); Header("Content-type: image/jpeg"); imageJPEG($im,"",30);
?>
image2WBMP
Вывод изображения в браузер или файл.
Синтаксис :
int image2WBMP( resource image [, string filename [, int threshold]])
Функция выводит изображение, заданное дескриптором image, в браузер, либо в файл, имя которого задано необязательным параметром filename.
Если изображение выводится в браузер, необходимо задать его тип WBMP как image/vnd.wap.wbmp функцией Header():
<?php
$file = "php.png";
$image = imagecreatefrompng($file);
header("Content-type: " . image_type_to_mime_type(IMAGETYPE_WBMP)); image2wbmp($image); // Вывод wbmp-картинки в браузер
?>
Функция image2WBMP() доступна PHP только если версия библиотеки GD 1.8 или ниже.
imageGif
Отсылка рисунка GIF браузеру или сохранение его в файле.
Синтаксис:
int imageGIF(int im [, string filename])
Функция сохраняют изображение, заданное своим идентификатором и находящееся в памяти, на диск, или же выводят его в браузер.
Разумеется, вначале изображение должно быть загружено или создано при помощи функции imageCreate(), т.е. мы должны знать его идентификатор im.
Если аргумент filename опущен, то сжатые данные в соответствующем формате выводятся прямо в стандартный выходной поток, т.е. в браузер. Нужный заголовок Content-type при этом не выводится, ввиду чего нужно выводить его вручную при помощи Header().
Фактически, вы должны вызвать одну из трех команд, в зависимости от типа изображения:
Header("Content-type: image/gif").
Т.к. библиотека GD, начиная с версии 1.6, не поддерживает формат GIF, данная функция используется редко.
imageCopy
Копирование части рисунка.
Синтаксис :
int imageCopy(int dst_im, int src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)
Функция копирует прямоугольную область начиная с позиции (src_x, src_y) шириной src_w и высотой src_h из рисунка src_im в рисунок dst_im, придав копируемой области смещение (dst_x, dst_y).
В следующем примере будет картинка file1.png целиком скопирована в file2.png
<?php
//Создаем первую картинку на основе готового изображения $im1=imageCreateFromPNG("img/file1.png");
//Определяем ее размеры
$size_x=imageSX($im1); $size_y=imageSY($im1);
//Создаем вторую пустую картинку $im2=imageCreate($size_x,$size_y);
//Копируем рисунок целиком из первого изображения во второе imageCopy($im2,$im1,0,0,0,0,$size_x,$size_y);
//Сохранение скопированной картинки в файле
imagePNG($im2, "img/file2.png"); ?>
imageCopyResized
Копирование части рисунка с масштабированием.
Синтаксис :
int imageCopyResized(int dst_im, int src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)
Эта функция - одна из самых мощных и универсальных. С помощью нее можно копировать изображения (или их участки), перемещать или масштабировать их.
dst_im задает идентификатор изображения, в который будет помещен результат работы функции. Это изображение должно уже быть создано или загружено и иметь надлежащие размеры.
src_im - идентификатор изображения, над которым проводится работа. Впрочем, src_im и dst_imмогут и совпадать.
Параметры srcX, srcY, srcW, srcH задают область внутри исходного изображения, над которой будет осуществлена операция - соответственно, координаты ее верхнего левого угла, ширину и высоту.
Наконец, четверка dstX, dstY, dstW, dstH задает то место на изображении dst_im, в которое будет "втиснут" указанный в предыдущей четверке прямоугольник. Заметьте, что, если ширина или высота двух прямоугольников не совпадают, то картинка автоматически будет нужным образом растянута или сжата.
В следующем примере файл file1.jpg уменьшается вдвое и записывается в файл file2.jpg:
<?php
$old = imageCreateFromJpeg("img/file1.jpg"); $w = imageSX($old);
$h = imageSY($old); $w_new=rounr($w/2); $h_new=round($h/2);
$new = imageCreate($w_new, $h_new);
imageCopyResized($new, $old, 0, 0, 0, 0, $w_new, $h_new, $w, $h); imageJpeg($new, "img/file2.jpg");
imageDestroy($old); imageDestroy($new); ?>
imageDestroy
Уничтожение рисунка.
Синтаксис :
int imageDestroy(int im)
Функция уничтожает дескриптор im ранее созданного рисунка (наподобие закрытия файла fclose() после открытия fopen()).
Работа с изображениями и библиотека GD : Работа с цветом в формате RGB
imageColorAllocate
Создание нового цвета и занесение его в палитру рисунка.
Синтаксис :
int imageColorAllocate(int im, int red, int green, int blue)
Функция возвращает идентификатор цвета, связанного с соответствующей тройкой RGB. Первым параметром функция требует идентификатор изображения, загруженного в память или созданного до этого.
Параметры red, green и blue задают красный, зеленый и синий компоненты цвета соответственно. Значения этих параметров должны лежать в пределах от 0 до
255, или от 0x00 до 0xFF.
Практически каждый цвет, который планируется в дальнейшем использовать, должен быть получен (определен) при помощи вызова этой функции.
Пример:
Пример использования функции imageColorAllocate():
<?php
. . .
// белый
$white = imagecolorallocate($im, 255, 255, 255); $white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF); // черный
$black = imagecolorallocate($im, 0, 0, 0);
$black = imagecolorallocate($im, 0x00, 0x00, 0x00);
. . .
?>
imageColorDeAllocate
Исключение цвета из палитры рисунка.
Синтаксис :
int imageColorDeAllocate(int im, int color)
Эта функция удаляет из палитры рисунка im цвет color, который был предварительно занесен в рисунок функцией imageColorAllocate().
Пример:
Пример использования функции imageColorDeAllocate():
<?php
. . .
$white = imageColorAllocate ($im, 255, 255, 255); imageColorDeAllocate ($im, $white);
. . .
?>
imageColorSet
Замена цвета определенного элемента палитры.
Синтаксис :
bool imageColorSet(int im, int index, int red, int green, int blue)
Данная функция устанавливает для элемента палитры index рисунка im значения компонент цвета: red (красный), green (зеленый), blue (синий). При этом все части рисунка, закрашенные данным цветом, также изменят свой оттенок.
imageColorClosest
Получение цвета палитры, наиболее близкого к указанному.
Синтаксис :
int imageColorClosest(int im, int red, int green, int blue)
Вместо того, чтобы пытаться выискать свободное место в палитре цветов, эта функция просто возвращает идентификатор цвета, уже существующего в рисунке и находящегося ближе всего к затребованному. Таким образом, нового цвета в палитру не добавляется. Если палитра не велика, то функция может вернуть не совсем тот цвет, который вы ожидаете. Например, в палитре из трех цветов "красный-зеленый-синий" на запрос желтого цвета будет, скорее всего, возвращен идентификатор зеленого - он ближе всего с точки зрения GD соответствует понятию "зеленый".
imageColorTransparent
Определение цвета прозрачности.
Синтаксис :
int imageColorTransparent(int im [,int color])
Эта функция указывает GD, что соответствующий цвет color (заданный своим идентификатором при помощи функции imageColorAllocate()) в изображении im (im - идентификатор изображения, заданный функцией imageCreate()) должен обозначиться как прозрачный. Возвращает идентификатор установленного до этого прозрачного цвета, либо false, если таковой не был определен ранее. Надо отметить, что не все форматы поддерживают задание прозрачного цвета - например, JPEG не может его содержать.
imageColorsForIndex
Получение RGB-составляющих элемента палитры.
Синтаксис :
array imageColorsForIndex(int im, int index)
Функция возвращает ассоциативный массив с ключами red, green, blue (именно в таком порядке), которым соответствуют значения, равные величинам компонент RGB в идентификаторе цвета index. Но мы можем и не обращать особого внимания на ключи и преобразовать возвращенное значение как список:
<?php
. . .
$color=imageColorAt($im,0,0); list($r,$g,$b)=array_values(imageColorsForIndex($im,$color)); echo "R=$r, g=$g, b=$b";
. . .
?>
imageColorAt
Возвращает индекс цвета точки.
Синтаксис :
int imageColorAt(int im, int x, int y)
Эта функция возвращает цвет точки, расположенной на координатах (x, y). Если PHP скомпилирован с GD library 2.0 или выше, а картинка - truecolor, то эта функция возвратит идентификатор цвета, а не его RGB-представление.
<?php
$im = imageCreateFromPng("file.png"); $rgb = ImageColorAt($im, 100, 100); $r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF;
?>
imageColorsTotal
Получение количества цветов в палитре.
Синтаксис :
int imageColorsTotal(int im)
Функция возвращает число цветов в палитре указанного изображения.
imageColorExact
Получение индекса цвета палитры.
Синтаксис :
int imageColorExact(int im, int red, int green, int blue)
Функция возвращает индекс указанного цвета (red, green, blue) в палитре изображения im.
Функция возвратит -1, если указанного цвета нет в палитре изображения.
imageColorResolve
Нахождение или создание указанного цвета.
Синтаксис :
int imageColorResolve(int im, int red, int green, int blue)
Функция возвращает индекс указанного цвета (red, green, blue) в палитре изображения im.
В случае, если такой цвет в палитре отсутствует, то он создается.
imageGammaCorrect
Применение гамма-коррекции рисунка.
Синтаксис :
int imageGammaCorrect(int im, double inputgamma, double outputgamma)
Эта функция производит исправления гаммы к изображению, заданному дескриптором im.
Параметр inputgamma задает входную гамму, а outputgamma - гамму вывода.
Работа с изображениями и библиотека GD : Графические примитивы
imageSetPixel
Рисует пиксель.
Синтаксис :
int imageSetPixel(int im, int x, int y, int color)
Выводит один пиксель цвета color в изображении im, расположенный в точке (x, y).
imageLine
Рисует сплошную тонкую линию.
Синтаксис :
int imageLine(int im, int x1, int y1, int x2, int y2, int color)
Эта функция рисует сплошную тонкую линию в изображении im, проходящую через точки (x1, y1) и (x2, y2), цветом color. Линия получается слабо связанной.
<?php
function imagelinethick($image, $x1, $y1, $x2, $y2, $color, $thick = 1)
{
/* this way it works well only for orthogonal lines imagesetthickness($image, $thick);
return imageline($image, $x1, $y1, $x2, $y2, $color); */
if ($thick == 1) {
return imageline($image, $x1, $y1, $x2, $y2, $color);
}
$t = $thick / 2 - 0.5;
if ($x1 == $x2 || $y1 == $y2) {
return imagefilledrectangle($image, round(min($x1, $x2) - $t), round(min($y1, $y2) - $t), round(max($x1, $x2) + $t), round(max($y1, $y2) + $t), $color);
}
$k = ($y2 - $y1) / ($x2 - $x1); //y = kx + q $a = $t / sqrt(1 + pow($k, 2));
$points = array(
round($x1 - (1+$k)*$a), round($y1 + (1-$k)*$a), round($x1 - (1-$k)*$a), round($y1 - (1+$k)*$a), round($x2 + (1+$k)*$a), round($y2 - (1-$k)*$a), round($x2 + (1-$k)*$a), round($y2 + (1+$k)*$a),
);
imagefilledpolygon($image, $points, 4, $color); return imagepolygon($image, $points, 4, $color);
};
?>
imageDashedLine
Рисует пунктирную линию.
Синтаксис :
int imageDashedLine(int im, int x1, int y1, int x2, int y2, int color)
Эта функция работает почти так же, как и imageLine(), только рисует не сплошную, а пунктирную линию. К сожалению, ни размер, ни шаг штрихов задавать нельзя, так что, если вам обязательна нужна пунктирная линия произвольной фактуры, придется заняться математическими расчетами и использовать imageLine().
imageRectangle
Рисует прямоугольник.
Синтаксис :
int imageRectangle(int im, int x1, int y1, int x2, int y2, int color)
Эта функция рисует в изображении im прямоугольник с границей толщиной 1 пиксель цветом color.
Левый верхний угол задается (x1, y1), а правый нижний - (x2, y2).
imageFilledRectangle
Зарисовка прямоугольной области.
Синтаксис :
int imageFilledRectangle(int im, int x1, int y1, int x2, int y2, int color)
Эта функция рисует закрашенный прямоугольник в изображении, заданном идентификатором im, цветом color (полученным, например, при помощи функции imageColorAllocate()). Координаты (x1, y1) и (x2, y2) задают координаты верхнего левого и правого нижнего углов, соответственно (отсчет, как обычно, начинается с верхнего угла и идет слева направо и сверху вниз).
Эта функция часто применяется для того, чтобы целиком закрасить только что созданный рисунок, например, прозрачным цветом:
<?php $im=imageCreate(100,100);
$color=imageColorAllocate($i,0,0,0); imageColorTransparent($im,$color); imageFilledRectangle($im,0,0,imageSX($im)-1,imageSY($im)-1,$color); // дальше работаем с изначально прозрачным фоном
?>
imageArc
Рисование части эллипса.
Синтаксис :
int imageArc(int im, int cx, int cy, int w, int h, int s, int e, int color)
Эта функция рисует в изображении im дугу сектора эллипса от угла s до e (углы указываются в градусах против часовой стрелки, отсчитываемых от горизонтали).
Эллипс рисуется такого размера, чтобы вписываться в прямоугольник (w, h), где w и h задают его ширину и высоту. cx и cy - координаты центра эллипса. Сама фигура не закрашивается, обводится только ее контур, для чего используется цвет color.
<?php
//создаем изображение размером 200x200 $img = imagecreate(200, 200);
//задаем цвет окружности
$white = imagecolorallocate($img, 255, 255, 255); // рисуем окружность
imagearc($img, 100, 100, 150, 150, 0, 360, $white);
//вывод рисунка в браузер header("Content-type: image/png"); imagepng($img);
//закрытие рисунка
imagedestroy($img); ?>
imageFill
Заливка цветом ограниченной области.
Синтаксис :
int imageFill(int im, int x, int y, int color)
Эта функция выполняет сплошную заливку одноцветной области, содержащей точку с координатами (x, y) цветом color. Нужно замерить, что современные алгоритмы заполнения работают довольно эффективно, так что не стоит особо заботиться о скорости ее работы. Будут закрашены только те точки, к которым можно проложить "одноцветный сильно связанный путь" из точки x, y.
Две точки называются связанными сильно, если у них совпадает, по крайней мере, одна координата, а по другой координате они отличаются не более, чем на 1 в любую сторону.
imageFillToBorder
Заливка области, ограниченной бордюром.
Синтаксис :
int imageFillToBorder(int im, int x, int y, int border, int color)
Эта функция очень похожа на imageFill(), только она выполняет закраску цветом color не одноцветных точек, а любых, но до тех пор, пока не будет достигнута граница цвета border.
imagePolygon
Рисует многоугольник с заданными вершинами.
Синтаксис :
int imagePolygon(int im, array points, int num_points, int color)
Эта функция рисует в изображении im многоугольник, заданный своими вершинами. Координаты углов передаются в массиве points, причем $points[0]=x0, $points[1]=y0, $points[2]=x1, $points[3]=y1 и т.д.
Параметр num_points указывает общее число вершин - на тот случай, если в
массиве их больше, чем нужно нарисовать. Многоугольник не закрашивается - только рисуется его граница цветом color.
<?php
//создаем изображение 400x300 $image = imagecreate(400, 300);
//устанавливаем цвет бордюра многоугольника
$col_poly = imagecolorallocate($image, 255, 255, 255);
// рисуем многоугольник imagepolygon($image,
array (
0, 0, 100, 200, 300, 200
),
3, $col_poly);
// вывод картинки в браузер header("Content-type: image/png"); imagepng($image);
?>
imageFilledPolygon
Рисует закрашенный многоугольник с заданными вершинами.
Синтаксис :
int imageFilledPolygon(int im, array points, int num_points, int color)
Эта функция делает практически то же самое, что и imagePolygon(), за исключением одного очень важного свойства: полученный многоугольник целиком заливается цветом color.
При этом правильно обрабатываются вогнутые части фигуры, если она не выпукла.
<?php
// задаем массив с координатами углов $values = array(
0 |
=> 40, |
// x1 |
1 |
=> 50, |
// y1 |
2 |
=> 20, |
// x2 |
3 |
=> 240, |
// y2 |
4 |
=> 60, |
// x3 |
5 |
=> 60, |
// y3 |
6 |
=> 240, |
// x4 |
7 |
=> 20, |
// y4 |
8 |
=> 50, |
// x5 |
9 |
=> 40, |
// y5 |
10 |
=> 10, |
// x6 |
11 |
=> 10, |
// y6 |
);
// создаем картинку 250x250 $im = imagecreate(250, 250);
// задаем цвет заполнения многоугольника $blue = imagecolorallocate($im, 0, 0, 255);
// рисуем многоугольник imagefilledpolygon($im, $values, 6, $blue );
// вывод каринки в браузер и ее закрытие header('Content-type: image/png'); imagepng($im);
imagedestroy($im); ?>
Работа с изображениями и библиотека GD : Работа с фиксированными шрифтами
Библиотека GD имеет некоторые возможности по работе с текстом и шрифтами. Шрифты представляют собой специальные ресурсы, имеющие собственный идентификатор, и чаще всего загружаемые из файла или встроенные в GD. Каждый символ шрифта может быть отображен лишь в моноцветном режиме, т.е. "рисованные" символы не поддерживаются. Встроенных шрифтов всего 5 (идентификаторы от 1 до 5), чаще всего в них входят моноширные символы разных размеров. Остальные шрифты должны быть предварительно загружены.
imageLoadFont
Загрузка шрифта.
Синтаксис :
int imageLoadFont(string file)
Функция загружает файл шрифтов file и возвращает идентификатор шрифта - это будет цифра, большая 5, потому что пять первых номеров зарезервировано как встроенные. Формат файла - бинарный, а потому зависит от архитектуры машины. Это значит, что файл со шрифтами должен быть сгенерирован по крайней мере на машине с процессором такой же архитектуры, как и у той, на котором вы собираетесь использовать PHP.
|
Формат файла со шрифтом |
Смещение Тип |
Описание |
Byte 0-3 long Число символов в шрифте (nchars)
byte 4-7 long Индекс первого символа шрифта (обычно 32 - пробел)
byte 8-11 long Ширина (в пикселях) каждого знака (width)
byte 12-15 long Высота (в пикселях) каждого знака (height)
Массив с информацией о начертании каждого символа, по
byte 16-... array одному байту на пиксел. На один символ, таким образом, приходится width*height*nchars байтов. 0 означает отсутствие
точки в данной позиции, все остальное - ее присутствие.
Левая колонка задает смещение начала данных внутри файла, а группами цифр, записанных через дефис, определяется, до какого адреса продолжаются данные.
imageFontHeight
Установка высоты шрифта.
Синтаксис :
int imageFontHeight(int font)
Функция возвращает высоту в пикселях символов в заданном шрифте.
imageFontWidth
Установка ширины шрифта.
Синтаксис :
int imageFontWidth(int font)
Функция возвращает ширину в пикселях символов в заданном шрифте.
imageString
Выводит строку в горизонтальном направлении.
Синтаксис :
int imageString(int im, int font, int x, int y, string s, int color)
Функция выводит строку s в изображение im, используя шрифт font и цвет color. Координаты (x, y) будут координатами верхнего левого угла прямоугольника, в который вписана строка.
Если параметр font задан как 1, 2, 3, 4 или 5, то выводится шрифт соответствующего размера.
<?php
//создаем изображение 100x30 $im = imagecreate(100, 30);
//задаем цвет текста
$textcolor = imagecolorallocate($im, 0, 0, 255);
// выводим надпись в верхнем левом углу imagestring($im, 5, 0, 0, "Hello world!", $textcolor);
// выводим изображение в браузер header("Content-type: image/jpg"); imagejpeg($im);
?>
imageStringUp
Выводит строку в вертикальном направлении.
Синтаксис :
int imageStringUp(int im, int font, int x, int y, string s, int color)
Эта функция также выводит строку текста, но не в горизонтальном, а в вертикальном направлении.
Верхний левый угол задается координатами (x, y).
Если параметр font задан как 1, 2, 3, 4 или 5, то выводится шрифт соответствующего размера.
imageChar
Вывод символа горизонтально.
Синтаксис :
int imageChar(int im, int font, int x, int y, string c, int color)
Функция выводит символ c в горизонтальном положении в месте на рисунке, заданном координатами (x, y). Шрифт символа задается параметром font. Если этот параметр принимает значение от 1 до 5, то используются встроенные шрифты. Цвет символа задается параметром color.
<?php
// создаем картинку размером 100x100 $im = imagecreate(100, 100);
$string = "PHP";
// задаем цвет символа
$black = imagecolorallocate($im, 0, 0, 0);
//Выведем символ "P" в верхнем левом углу imagechar($im, 1, 0, 0, $string, $black);
//выведем картинку в браузер header("Content-type: image/png"); imagepng($im);
?>
imageCharUp
Вывод символа вертикально.
Синтаксис :
int imageCharUp(int im, int font, int x, int y, string c, int color)
Функция выводит символ c в вертикальном положении в месте на рисунке, заданном координатами (x, y). Шрифт символа задается параметром font. Если этот параметр принимает значение от 1 до 5, то используются встроенные шрифты. Цвет символа задается параметром color.
Работа с изображениями и библиотека GD : Работа со шрифтами TrueType и PostScript Type 1
Библиотека GD поддерживает также работу со шрифтами PostScript и TrueType. Для того чтобы заработали приведенные ниже функции, PHP должен быть откомпилирован и установлен вместе с библиотекой FreeType, доступной по адресу http://www.freetype.org. В Windows-версии PHP она установлена по умолчанию.
imageTTFText
Рисование текста шрифтом TrueType.
Синтаксис :
array imageTTFText(int im, int size, int angle, int x, int y, int color, string fontfile, string text)
Эта функция помещает строку text в изображение im цветом color. Как обычно, color должен представлять собой допустимый идентификатор цвета. Параметр angle задает угол наклона в градусах выводимой строки, отсчитываемой от горизонтали против часовой стрелки. Координаты (x, y) указывают положение так называемой базовой точки строки (обычно это ее левый нижний угол).
Параметр size задает размер шрифта, который будет использоваться при выводе строки. fontfile должен содержать имя TTF-файла, в котором и храниться шрифт.
Функция возвращает список из 8 элементов. Первая их пара задает координаты (x,y) верхнего левого угла прямоугольника, описанного вокруг строки текста в изображении, вторая пара - координаты верхнего правого угла, и т.д. Так как в общем случае строка может иметь любой наклон angle, здесь требуются 4 пары координат.
Строка текста text может содержать символьные последовательности UTF-8 (в виде {) для вывода символов с кодами, большими 255.
При использовании отрицательного значения индекса цвета color отключается сглаживание шрифта (antialiasing).
Данная функция требует библиотеке GD и FreeType.
<?php
header("Content-type: image/jpeg"); $im = imagecreate(400, 30);
$white = imagecolorallocate($im, 255, 255, 255); $black = imagecolorallocate($im, 0, 0, 0);
// Replace path by your own font path
imagettftext($im, 20, 0, 10, 20, $black, "/path/arial.ttf", "Testing... Omega: Ω");
imagejpeg($im); imagedestroy($im);
?>
Следующий пример выводит строку по центру рисунка
<?php
$gi = imageCreate(200,100);
$bg = imageColorAllocate($gi,0,220,0); $tx = imageColorAllocate($gi,25,2,228); $w = imageSX($gi); // ширина рисунка $h = imageSY($gi); // высота рисунка
imageFilledRectangle($gi,0,0,$w,$h,$bg);
$szf = 20; // размер шрифта
$ang = 240; // угол поворота строки $str = "Heyou"; // текст строки $font = "symbol.ttf" // файл шрифта
$sz = imageTTFBBox($szf,$ang,$font,$str); $sdx = $sz[4]/2;
$sdy = ($sz[7]+$sz[3])/2; imageTTFText($gi,$szf,$ang,$w/2-$sdx,$h/2-$sdy,$tx,$font,$str); Header("Content-Type: image/png");
imagePng($gi,"file.png"); ?>
imageTTFBBox
Расчет площади, занимаемой строкой шрифта TrueType.
Синтаксис :
attay imageTTFBBox(int size, int angle, string fontfile, string text)
Эта функция ничего не выводит в изображение, а просто определяет, какой размер и положение заняла бы строка текста text размера size, выведенная под
углом angle в какой-нибудь рисунок. Параметр fontfile задает абсолютный путь к файлу шрифта, который будет использован при выводе.
Возвращаемый список содержит всю информацию о размерах строки в формате, похожем на тот, что выдает функция imageTTFText(). Однако порядок точек в нем отличается.
Содержимое массива, возвращаемого функцией imageTTFBBox():
0 и 1 - (x,y) левого нижнего угла
2 и 3 - (x,y) правого нижнего угла
4 и 5 - (x,y) правого верхнего угла
6 и 7 - (x,y) левого верхнего угла
Координаты могут иметь отрицательные значения. Функция требует библиотеки GD и FreeType.
imagePSLoadFont
Загрузка из файла шрифта PostScript Type 1.
Синтаксис :
int imagePSLoadFont(string filename)
Возвращает дескриптор загруженного шрифта или FALSE при ошибке (также выводится предупреждение).
<?php
header("Content-type: image/jpeg"); $im = imagecreate(350, 45);
$black = imagecolorallocate($im, 0, 0, 0); $white = imagecolorallocate($im, 255, 255, 255);
$font = imagepsloadfont("bchbi.pfb"); // or locate your .pfb files on your machine
imagepstext($im, "Testing... It worked!", $font, 32, $white, $black, 32, 32);
imagepsfreefont($font);
imagejpeg($im, "", 100); //for best quality...your mileage may vary imagedestroy($im);
?>
Эта функция доступна только в том случае, если PHP был скомпилирован с опцией --enable-t1lib.
imagePSFreeFont
Выгрузка шрифта PostScript Type 1.
Синтаксис :
void imagePSFreeFont(int fontindex)
Данная функция освобождает память от шрифта, заданного параметром fontindex. Эта функция доступна только в том случае, если PHP был скомпилирован с опцией --enable-t1lib.
imagePSEncodeFont
Установка схемы перекодировки текста.
Синтаксис :
int imagePSEncodeFont(int font_ndex, string encodingfile)
Загружает файл перекодировки encodingfile для шрифта font_index. Поскольку шрифты PostScript по умолчанию не используют символы с кодами, большими 127, перекодировка требуется при необходимости использования не английского языка. Формат файла описан в документации Tllibs, также с библиотекой поставляются 2 готовых файла: IsoLatinl.enc и IsoL.atin2.enc.
Если перекодировка используется постоянно, установите параметр ps.default_encoding в файле конфигурации со значением имени файла перекодировки, который будет загружаться автоматически.
Эта функция доступна только в том случае, если PHP был скомпилирован с опцией --enable-t1lib.
imagePsExtendFont
Масштабирование шрифта.
Синтаксис :
bool imagePsExtendFont (int font_index, float extend)
Функция производит растяжение или сжатие шрифта, заданного параметром font_index до размера, заданного параметром extend.
Если значение параметра extend меньше 1, то шрифт будет уменьшаться.
Эта функция доступна только в том случае, если PHP был скомпилирован с опцией --enable-t1lib.
imagePsSlantFont
Установка наклона шрифта.
Синтаксис :
bool imagePsSlantFont(int font_index, double slant)
Фукнция устанавливает наклон шрифта font_index в значение, заданное параметром slant.
Эта функция доступна только в том случае, если PHP был скомпилирован с опцией --enable-t1lib.
imagePSBBox
Расчет площади, занимаемой строкой шрифта PostScript Type 1.
Синтаксис :
array imagePSBBox( string text, int font, int size [, int space [, int tightness [, float angle]]])
Расчеты производятся на основании аргументов: size - размер шрифта в пикселах;
space — изменение размера пробелов по отношению к нормальному (может быть отрицательным);
