PHP - Руководство по РНР 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"); ?>
|
Опциональный параметр 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.
| 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
|
Эта функция требует обе библиотеки: 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().
Возвращает индекс цвета в палитре изображения, который "ближе всего" к указанному набору RGB.
"Дистанция" между желанным цветом и каждым цветом в палитре определяется так, как будто значения RGB определяют точки в трехмерном пространстве.
Смотри также
imagecolorexact().
Возвращает индекс указанного цвета в палитре изображения.
Если цвет в палитре изображения не присутствует, возвращается -1.
Смотри также
imagecolorclosest().
Эта функция всегда возвращает индекс для запрашиваемого цвета, одно из двух - или указанный цвет, или ближайшую альтернативу.
Смотри также
imagecolorclosest().
Эти установки устанавливают соответствие между индексом в палитре и цветом. это используется для создания эффектов сплошной заливки в палитре изображения без накладных расходов преобразования текущей заливки.
Смотри также
imagecolorat().
Возвращается ассоциативный массив с красным, синим и зеленым ключами, которые содержат соответствующие значения для указанного индекса цвета.
Смотри также
imagecolorat() и
imagecolorexact().
Возвращает количество цветов в указанной палитре.
Смотри также
imagecolorat() и
imagecolorsforindex().
ImageColorClosest
ImageColorClosest -- узнать индекс цвета, ближайшего заданному
Описание
int imagecolorclosest(int im, int red, int green, int blue);
ImageColorExact
ImageColorExact -- узнать индекс указанного цвета
Описание
int imagecolorexact(int im, int red, int green, int blue);
ImageColorResolve
ImageColorResolve -- узнать индекс указанного цвета или его ближайшую возможную альтернативу
Описание
int imagecolorresolve(int im, int red, int green, int blue);
ImageColorSet
ImageColorSet -- установить цвет для указанного индекса в палитре
Описание
bool imagecolorset(int im, int index, int red, int green, int blue);
ImageColorsForIndex
ImageColorsForIndex -- узнать цвет по индексу
Описание
array imagecolorsforindex(int im, int index);
ImageColorsTotal
ImageColorsTotal -- количество цветов в палитре изображения
Описание
int imagecolorstotal(int im);
