Руководство по РНР 3.0 - Функции работы с изображениями
- Содержание
-
GetImageSize
- ImageArc
- ImageChar
- ImageCharUp
- ImageColorAllocate
- ImageColorTransparent
- ImageCopyResized
- ImageCreate
- ImageCreateFromGif
- ImageDashedLine
- ImageDestroy
- ImageFill
- ImageFilledPolygon
- ImageFilledRectangle
- ImageFillToBorder
- ImageFontHeight
- ImageFontWidth
- ImageGif
- ImageInterlace
- ImageLine
- ImageLoadFont
- ImagePolygon
- ImageRectangle
- ImageSetPixel
- ImageString
- ImageStringUp
- ImageSX
- ImageSY
- ImageTTFBBox
- ImageTTFText
- ImageColorAt
- ImageColorClosest
- ImageColorExact
- ImageColorResolve
- ImageColorSet
- ImageColorsForIndex
- ImageColorsTotal
Вы можете использовать фуннкции работы с изображениями для получения размеров картинок в файлах JPEG, GIF, PNG, и, если у Вас есть библиотека GD (доступна на http://www.boutell.com/gd/), Вы также будете иметь возможность создавать GIF-изображения и управлять ими.
GetImageSize
GetImageSize -- получение размеров GIF, JPG или PNG изображений
Описание
array getimagesize
(string filename, array [
imageinfo]);
Функция
GetImageSize() определяет размеры любых изображений в файлах GIF, JPG или PNG и возвращает размерность вместе с типом файла и строкой в формате высота/ширина, которую можно использовать в стандартном теге HTML IMG.
Возвращается массив из четырех элементов. Индекс 0 содержит ширину изображения в пикселах. Элемент 1 содержит высоту. Элемент 2 - флаг типа изображения. 1 = GIF, 2 = JPG, 3 = PNG. Элемент 3 - строку с корректным заданием "height=xxx width=xxx" для прямого использования в теге IMG
Пример 1. GetImageSize
<?php $size = GetImageSize("img/flag.jpg"); ?>
<IMG SRC="img/flag.jpg" <?php echo $size[3]; ?>>
|
Опциональный параметр imageinfo
позволяет Вам получить некоторую дополнительную информацию о файле изображения. Сейчас возвращаеются разнообразные JPG APP маркеры в ассоцированном массиве. Некоторые программы используют эти APP для встраивания текстовой информации в изображение. Очень распространено встраивание IPTC
http://www.xe.net/iptc/ информации в APP13 маркер. Вы можете использовать функцию
iptcparse() для перевода бинарного APP13 маркера в нечто читабельное.
Пример 2. GetImageSize возвращает IPTC
<?php
$size = GetImageSize("testimg.jpg",&$info);
if (isset($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
var_dump($iptc);
}
?>
|
Примечание: Эта функция не требует библиотеки GD.
ImageArc
ImageArc -- рисует часть эллипса
Описание
int imagearc
(int im, int cx, int cy, int w, int h, int s, int e, int col);
ImageArc рисует чать эллипса с центро в cx, cy (верхний левый угол - 0,0) в изображении im. w и h определяют высоту и ширину эллипса в соответствии с начальной и конечной точкой, определенными в аргументах s и e.
ImageChar
ImageChar -- рисует символы горизонтально
Описание
int imagechar
(int im, int font, int x, int y, string c, int col);
ImageChar рисует первый символ из c в рисунке id с верхним левым углом в x,y (верхний левый - 0,0) цветом col. Шрифтом 1, 2, 3, 4 или 5, используются встроенные шрифты (больше цифра - больше шрифт).
Смотри также
imageloadfont().
ImageCharUp
ImageCharUp -- рисует символы вертикально
Описание
int imagecharup
(int im, int font, int x, int y, string c, int col);
ImageCharUp рисует символ c вертикально в изображении im по координатам x, y (верхний левый - 0, 0) с цветом col. Если font равен 1, 2, 3, 4 или 5, используются встроенные шрифты.
Смотри также
imageloadfont().
ImageColorAllocate
ImageColorAllocate -- определяет цвет изображения
Описание
int imagecolorallocate
(int im, int red, int green, int blue);
ImageColorAllocate возвращает цвет в схеме RGB. Аргумент im возвращается функцией
imagecreate(). ImageColorAllocate должна быть вызвана для создания каждого цвета, который планируется использовать в изображении, представленном im.
$white = ImageColorAllocate($im, 255,255,255);
$black = ImageColorAllocate($im, 0,0,0);
ImageColorTransparent
ImageColorTransparent -- определить цвет как прозрачный
Описание
int imagecolortransparent
(int im, int [
col]);
ImageColorTransparent устанавливает прозрачный цвет в изображении im в col. im - идентификатор изображения, возвращенный
imagecreate(), а col - идентификатор цвета, возвращенный функцией
imagecolorallocate().
Возвращается идентификатор нового (или текущего, если не указан параметр col) прозрачного цвета.
ImageCopyResized
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);
ImageCopyResized копир область одного изображения в другое. dst_im - изображение-получатель, src_im - исходное изображение. Если координаты исходного и результирующего изображений различны по ширине и высоте, производится соответствующее сжатие/растягивание фрагмента изображения. Координаты - относительно левого верхнего угла. Функция может быть использована для копирования фрагментов одного и того же изображения (если dst_im равно src_im) но если области перекроются, результат может быть непредсказуемым.
ImageCreate
ImageCreate -- создать новое изображение
Описание
int imagecreate
(int x_size, int y_size);
ImageCreate возвращает идентификатор изображения чистого листа размерами x_size на y_size.
ImageCreateFromGif
ImageCreateFromGif -- создать новое изображение из файла или URL
Описание
int imagecreatefromgif
(string filename);
ImageCreateFromGif возвращает идентификатор изображения, полученного из filename.
ImageDashedLine
ImageDashedLine -- нарисовать пунктирную линию
Описание
int imagedashedline
(int im, int x1, int y1, int x2, int y2, int col);
ImageLine рисует пунктирную линию от x1,y1 до x2,y2 (верхний левй угол - 0,0) в изображении im цветом col.
Смотри также
imageline().
ImageDestroy
ImageDestroy -- уничтожить изображение
Описание
int imagedestroy
(int im);
ImageDestroy освобождает память, ассоциированную с изображением im. im - идентификатор, возвращенный функцией
imagecreate().
ImageFill
ImageFill -- заливка
Описание
int imagefill
(int im, int x, int y, int col);
ImageFill выполняет заливку, начиная с координат x, y (верхний левй угол - 0,0) цветом col изображения im.
ImageFilledPolygon
ImageFilledPolygon -- нарисовать закрашенный многоугольник
Описание
int imagefilledpolygon
(int im, array points, int num_points, int col);
ImageFilledPolygon создает закрашенный многоугольник в изображении im. points - массив PHP содержит вершины многоугольника:
points[0] = x0,
points[1] = y0, points[2] = x1,
points[3] = y1, etc.
num_points - общее число вершин.
ImageFilledRectangle
ImageFilledRectangle -- нарисовать закрашенный прямоугольник
Описание
int imagefilledrectangle
(int im, int x1, int y1, int x2, int y2, int col);
ImageFilledRectangle создает закрашенный прямоугольник цвета col в изображении im, начиная с координат верхнего левого угла x1, y1, и заканчивая в правом нижнем - x2, y2. 0, 0 - левый верхний угол изображения.
ImageFillToBorder
ImageFillToBorder -- заливка до указанного цвета
Описание
int imagefilltoborder
(int im, int x, int y, int border, int col);
ImageFillToBorder выполняет заливку до границы, определенной цветом в border. Начальная точка заливки - x,y (верхний левый угол - 0,0) и облласть заливается цветом col.
ImageFontHeight
ImageFontHeight -- узнать высоту шрифта
Описание
int imagefontheight
(int font);
Возвращает высоту шрифта font в пикселах.
Смотри также
imagefontwidth() и
imageloadfont().
ImageFontWidth
ImageFontWidth -- узнать ширину шрифта
Описание
int imagefontwidth
(int font);
Возвращает ширину символа шрифта font в пикселах.
Смотри также
imagefontheight() и
imageloadfont().
ImageGif
ImageGif -- вывести изображение на браузер или в файл
Описание
int imagegif
(int im, string filename);
ImageGif создает GIF файл с именем filename из изображения im. Аргумент im возвращается функцией
imagecreate().
Формат изображения будет соответствовать спецификации GIF87a, если изображение не было сделано прозрачным функцией
imagecolortransparent(), в этом случае формат будет соответствовать GIF89a.
Аргумент filename опционален, и если он отсутствует, строки изображения будут выводиться непосредственно на брайзер потоком. Указав тип изображения image/gif в функции header, вы можете создавать PHP скрипты, которые будут выводить GIF на браузер.
ImageInterlace
ImageInterlace -- включение/выключение чередования (interlace)
Описание
int imageinterlace
(int im, int [
interlace]);
ImageInterlace() переключает бит чередования. Если interlace равен 1, изображение im будет выводиться поэтапно, и если interlace равно 0, чередование выключено.
Возвращается текущее состояние бита чередования для изображения.
ImageLine
ImageLine -- нарисовать линию
Описание
int imageline
(int im, int x1, int y1, int x2, int y2, int col);
ImageLine рисует линию от x1,y1 до x2,y2 (левй верхний точка - 0,0) в изображении im цветом col.
Смотри также
imagecreate() и
imagecolorallocate().
ImageLoadFont
ImageLoadFont -- загрузить новый шрифт
Описание
int imageloadfont
(string file);
ImageLoadFont загружает пользовательский растровый шрифт и возвращает идентификатор шрифта (который всегда больше 5, тобы не вызвать конфликта со встроенными шрифтами).
Файл шрифта - двоичный и архиетктурно зависимый. Это значит, что Вам следует генерировать файл шрифта на том процессоре (архитектуре), на котором Вы будете запускать PHP.
Таблица 1. Формат файла шрифта
позиция байта |
тип данных C |
Описание |
байты 0-3 |
int |
число символов в шрифте |
байты 4-7 |
int |
значение первого символа в шрифте (часто 32 для пробела) |
байты 8-11 |
int |
ширина символов в пикселах |
байты 12-15 |
int |
высота символов в пикселах |
байты 16- |
char |
массив с данными на символы, один байт на пиксел, для каждого символа - nchars*width*height. |
Смотри также
ImageFontWidth() и
ImageFontHeight().
ImagePolygon
ImagePolygon -- нарисовать многоугольник
Описание
int imagepolygon
(int im, array points, int num_points, int col);
ImagePolygon создает многоугольник в изображении im. points - массив PHP, содержащий вершины многоугольника, т.е points[0] = x0, points[1] = y0, points[2] = x1, points[3] = y1, etc. num_points - общее число вершин.
Смотри также
imagecreate().
ImageRectangle
ImageRectangle -- нарисовать прямоугольник
Описание
int imagerectangle
(int im, int x1, int y1, int x2, int y2, int col);
ImageRectangle создает прямоугольник цветом col в изображении im, начиния с левой верхней координаты x1,y1 и заканчивая нижней правой x2,y2. 0,0 - левй верхний угол изображения.
ImageSetPixel
ImageSetPixel -- установить один пиксел
Описание
int imagesetpixel
(int im, int x, int y, int col);
ImageSetPixel рисует пиксел x,y (верхний левый - 0,0) в изображении im цветом col.
Смотри также
imagecreate() и
imagecolorallocate().
ImageString
ImageString -- нарисовать строку горизонтально
Описание
int imagestring
(int im, int font, int x, int y, string s, int col);
ImageString рисует строку s в изображении im по координатам x,y (верхний левый - 0,0) цветом col. Если font равен 1, 2, 3, 4 или 5, используются встроенные шрифты.
Смотри также
imageloadfont().
ImageStringUp
ImageStringUp -- нарисовать строку вертикально
Описание
int imagestringup
(int im, int font, int x, int y, string s, int col);
ImageStringUp рисует строку s вертикально в изображении im по координатам x,y (верхний левый - 0,0) цветом col. Если font равен 1, 2, 3, 4 или 5, используются встроенные шрифты.
Смотри также
imageloadfont().
ImageSX
ImageSX -- get image width
Описание
int imagesx
(int im);
ImageSX возвращает ширину изображения, определяемого im.
Смотри также
imagecreate() и
imagesy().
ImageSY
ImageSY -- узнать высоту изображения
Описание
int imagesy
(int im);
ImageSY возвращает высоту изображения, определяемого im.
Смотри также
imagecreate() и
imagesx().
ImageTTFBBox
ImageTTFBBox -- установить границы области для текста, где используются шрифты TypeType
Описание
array ImageTTFBBox
(int size, int angle, string fontfile, string text);
Функция рассчитывает и возвращает границы области (в пикселах) для текста с шрифтами TrueType.
- text
Измеряемая строка.
- size
Размер шрифта.
- fontfile
Имя файла TrueType шрифта. (Может быть и URL.)
- angle
Угол в градусах, под которым наклонен измеряемый text.
ImageTTFBBox() возвращает массив из 8-и элементов, представляющих четыре точки границы области текста:
0 |
нижний левый угол, позиция X |
1 |
нижний левый угол, позиция Y |
2 |
нижний правый угол, позиция X |
3 |
нижний правый угол, позиция Y |
4 |
верхний правый угол, позиция X |
5 |
верхний правый угол, позиция Y |
6 |
верхний левый угол, позиция X |
7 |
верхний левый угол, позиция Y |
Точки относятся к text безотносительно к углу, т.е "верхний левый" означает верхний левый угол текста при его горизонтальном расположении.
Функция требует две библиотеки: GD и Freetype.
Смотри также
ImageTTFText().
ImageTTFText
ImageTTFText -- впсать текст в изображение, используя TrueType шрифт
Описание
array ImageTTFText
(int im, int size, int angle, int x, int y, int col, string fontfile, string text);
ImageTTFText рисует строку text в изображении, идентифицируемом im, начиная с координат x,y (верхняя левая - 0,0), под углом angle цветом col, используя файл TrueType шрифта, указанный в fontfile.
Координаты, указанные в x, y определяют базовую точку символа (приблизительно нижний левый угол). Это отличается от
ImageString(), где x,y определяют верхний правый угол первого символа.
angle в градусах, 0 означает написание текста с лава на право (в направлении на 3 часа), более высокие значения - поворот против часовой стрелки (т.е. 90 - написание текста с низу вверх).
fontfile - путь к файлу шрифта TrueType, который планируется использовать.
text - строка текста, которая может включать символы UTF-8 (в форма: { ) для доступа к сиволам за пределами первых 255.
col индекс цвета. Использование отрицания индекса цвета имеет эффект включения антиалиасинга.
ImageTTFText() возвращает массив из 8 элементов, представляющих четыре точки границы области вывода текста. Порядок точек: вепхняя левая, верхняя правая, нижняя правая, нижняя левая. ТОчки относятся к тексту без учета угла, т.е. "верхняя левая" означает верхний левый угол горизонтально расположенного текста.
Скрипт этого примера создает черный GIF 400x30 пикселей, со словом "Testing...", написанным шрифтом Arial.
Пример 1. ImageTTFText
<?php
Header("Content-type: image/gif");
$im = imagecreate(400,30);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
ImageTTFText($im, 20, 0, 10, 20, $white, "/path/arial.ttf", "Testing... Omega: Ω");
ImageGif($im);
ImageDestroy($im);
?>
|
Эта функция требует обе библиотеки: GD и
FreeType<.
Смотри также
ImageTTFBBox().
ImageColorAt
ImageColorAt -- узнать индекс цвета пиксела
Описание
int imagecolorat
(int im, int x, int y);
Returns the index of the color of the pixel at the
specified location in the image.
Смотри также
imagecolorset() и
imagecolorsforindex().
ImageColorClosest
ImageColorClosest -- узнать индекс цвета, ближайшего заданному
Описание
int imagecolorclosest
(int im, int red, int green, int blue);
Возвращает индекс цвета в палитре изображения, который "ближе всего" к указанному набору RGB.
"Дистанция" между желанным цветом и каждым цветом в палитре определяется так, как будто значения RGB определяют точки в трехмерном пространстве.
Смотри также
imagecolorexact().
ImageColorExact
ImageColorExact -- узнать индекс указанного цвета
Описание
int imagecolorexact
(int im, int red, int green, int blue);
Возвращает индекс указанного цвета в палитре изображения.
Если цвет в палитре изображения не присутствует, возвращается -1.
Смотри также
imagecolorclosest().
ImageColorResolve
ImageColorResolve -- узнать индекс указанного цвета или его ближайшую возможную альтернативу
Описание
int imagecolorresolve
(int im, int red, int green, int blue);
Эта функция всегда возвращает индекс для запрашиваемого цвета, одно из двух - или указанный цвет, или ближайшую альтернативу.
Смотри также
imagecolorclosest().
ImageColorSet
ImageColorSet -- установить цвет для указанного индекса в палитре
Описание
bool imagecolorset
(int im, int index, int red, int green, int blue);
Эти установки устанавливают соответствие между индексом в палитре и цветом. это используется для создания эффектов сплошной заливки в палитре изображения без накладных расходов преобразования текущей заливки.
Смотри также
imagecolorat().
ImageColorsForIndex
ImageColorsForIndex -- узнать цвет по индексу
Описание
array imagecolorsforindex
(int im, int index);
Возвращается ассоциативный массив с красным, синим и зеленым ключами, которые содержат соответствующие значения для указанного индекса цвета.
Смотри также
imagecolorat() и
imagecolorexact().
ImageColorsTotal
ImageColorsTotal -- количество цветов в палитре изображения
Описание
int imagecolorstotal
(int im);
Возвращает количество цветов в указанной палитре.
Смотри также
imagecolorat() и
imagecolorsforindex().
Содержание