Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
7 Мб
Скачать
☆

Заливка изображений

Расширение GD предлагает функции imagefilledrectangle () , imagefilledpolygon() и imagefilledellipse(), которые заливают всю геометриче­скую форму определенным цветом.

imagefilledarc($img, $centerx, $centery, $width, $height, $start_ang, $end_ang, $color, $style);

Дополнительный параметр $style представляет собой битовое поле, определяющее способ заливки. Пример построения секторной диаграммы:

<?php

// create image //imagepr10

define("WIDTH", 400); define("HEIGHT", 400);

$pie_data = array (10, 5, 20, 40, 10, 15);

$image = imagecreatetruecolor(WIDTH, HEIGHT);

// allocate some solors

$white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);

$navy = imagecolorallocate($image, 0x00, 0x00, 0x80);

$cx=(int)WIDTH/2; $cy=(int)HEIGHT/2;

$a=WIDTH-20; $b=(int)$a/2;

$col=$white;

// make the 3D effect

imagefilledarc($image,$cx,($cx+20),$a,$b,0,360,$navy, IMG_ARC_PIE);

$langl = 0;

foreach($pie_data as $perc) {

$arclen = (360 * $perc) / 100;

imagefilledarc($image, $cx,$cy, $a,$b, $langl, ($langl+$arclen), $col ,IMG_ARC_PIE);

$langl += $arclen; $col=$col-20000;

}

// flush image

header('Content-type: image/png');

imagepng($image);

imagedestroy($image);

?>

функция imagefill () на любом сплошном участке заменяет один цвет другим выбран­ным цветом. Синтаксис функции imagefill () выглядит следующим образом:

imagefill($img, Sx, Sy, Scolor);

$х и $y определяют местоположе­ние заменяемого цвета, а параметр $color представ­ляет индекс цвета в палитре, который будет использован для замены. Альтернативная функция, которая обладает более широкими возможностями — это функ­ция imagefilltoborder (). Ее синтаксис выглядит следующим образом:

imagefilltoborder($img,$х, Sy, Sborder, Scolor);

Эта функция выполнит заливку сплошного участка, определяемого не одним цветом, а цветом, определяемым параметром $border.

Удаление и изменение цветов палитры

Для удаления цветов из палитры можно воспользоваться функцией:

imagecolordeallocate($img, $color);

Параметр $color задает цвет в палитре, который должен быть удален. После того как цвет будет удален из палитры, позиция, будет использована для хранения другого цвета, назначаемого с помощью функции imagecolorallocate().

<?php //imagepr13

define("WIDTH", 300); define("HEIGHT", 300);

$img = imagecreate(WIDTH, HEIGHT);

$backg= $white = imagecolorallocate($img,0xff, 0xff,0xff);

$black = imagecolorallocate($img, 0, 0, 0);

$red = imagecolorallocate($img, 0xFF, 0, 0);

$blue = imagecolorallocate($img, 0, 0, 0xFF);

imagefilledrectangle($img, 0, 0, WIDTH-1, HEIGHT-1, $black);

imagefilledrectangle($img, 40,40, WIDTH-1, HEIGHT-1, $red);

imagefilledrectangle($img, 80, 80, WIDTH-1, HEIGHT-1, $blue);

imagecolordeallocate($img, $black);

$green = imagecolorallocate($img, 0, 0xff, 0);

// Get the color index for the background

$bg = imagecolorat($img, 0, 0);

// Set the backgrund to be blue

imagecolorset($img, $bg, 200,200, 255);

// Output the image to the browser

header("Content-Type: image/png");

imagepng($img);

imagedestroy($img);

?>

Расширение GD позволяет напрямую заменять определенный индекс в палитре дру­гим цветом с помощью функции imagecolorset($img, $color, $red, $green, $blue);