Справочник
WEB - языков

www.spravkaweb.ru Rambler's Top100
 Вы находитесь: Главная/PHP/Работа с изображениями и библиотека GD.Графические примитивыРаспечатать 
Разделы
Новости
Сразу все
HTML
JavaScript
VBScript
CSS
Flash
Perl
PHP
MySQL
SSI
VRML
Дополнительно
Советы
Download
Форум
Гостевая
Ссылки
Написать мне
Поиск:
Рассылки
Subscribe.Ru:

PHP

<--Назад | Вернуться к списку | Дальше-->
Работа с изображениями и библиотека 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);
?>
По материалам книги Игоря Григина "PHP 4. Специальный справочник."
www.piter.com
Наверх / К оглавлению
 
Download
Скачать справочник по PHP
Что нового:
05.07.2004
  • В разделе PHP добавлены некоторые функции для работы с картинками (библиотека GD):
    imagetypes(), ...
  • В разделе JavaScript добавлены свойства на букву D, E, F, H, I
  • В разделе Советы добавлена статья, рассказывающая как вставить в html-страницу документы MS Office (Word, Excel и т.д.)
  • Голосование:
    Ваше мнение о сайте:
    Просто супер!
    Нормальный.
    Так себе.
    Мне все равно.
    Плохой.
    Хуже не видел!
    Счетчики:
    Rambler's Top100
    Сделать страницу стартовой Сделать страницу стартовой
    Добавить страницу в избранное Добавить сайт в избранное
    Сообщить об найденной ошибке Сообщить об ошибке