Руководство по РНР 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 (в форма: &#123; ) для доступа к сиволам за пределами первых 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: &#937;");
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().

Назад, к содержанию