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

Получение информации об изображении

Функции imagesx($img) и imagesy($img), возвра­щают значения, соответст­венно, ширины и вы­соты (в пикселях) изо­бражения для данного ресурса. Еще одна похожая функция – это функция getimagesize(). Для изображений в натуральном цвете, расширение GD предлагает функцию

imageistruecolor($img);

Эта функция возвращает булевское значение true, если переданный ей ресурс изобра­жения $img имеет натуральный цвет; в противном случае она возвращает значение false.

Если необходимо узнать, может ли РНР работать с конкретным типом изображений, то лучше всего использовать функцию imagetypes () ;

При выполнении эта функция возвращает битовое поле, сформированное из кон­стант: IMG_GIF | IMG­_JPG | IMG_PNG | IMG_WBMP с использованием логического "ИЛИ". Рассмотрим пример:

<?php

$supported = imagetypes();

if($supported & IMG_JPG) {

echo "версия GD поддерживает изображения в формате JPEG."; }

else {

echo "версия GD не поддерживает изображения в формате JPEG.";

}

?>

Функции рисования прямых и кривых линий

РНР поддерживает рисование линий, прямоугольников, эллипсов и многоугольников и построение заполненных форм. Можно выбирать способ рисования линии с помощью стилей и кистей. Рсование линий на холсте осуществляется с помощью функции :

imageline($img,$start_x, $start_y, $end_x, $end_y, $color);

Параметр $img представляет ресурс изображения для рисования прямой линии, начи­ная с точки ($start_x, $start_y), до точки с координатами ($end_x, $end_y) с цветом, определяемым параметром $color. Для рисова­ния многоугольников и прямоугольников используются функции imagepolygon () и imagerectangle(), соответственно.

imagerectangle($img,$topLx,$topLy,$bRx,$bRy,$color);

Размеры и расположение прямоугольника определяются точками верхнего левого угла ($topLx, $topLy) и нижнего правого угла ($bRx, $bRy).

Синтаксис функции imagepolygon() выглядит следующим образом:

imagepolygon($img, $points, $num_points, $color);

Параметр $points представляет массив, содержащий координаты (X ;Y) каж­дой вер­шины, $num_points —общее количество пар (X, Y) в массиве. Рассмотрим пример:

<?php //imagepr6.php

// Create a 500 x 500 image

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

$canvas = imagecreatetruecolor(WIDTH, HEIGHT);

// Allocate colors

$pink = imagecolorallocate($canvas, 255, 105, 180);

$green = imagecolorallocate($canvas, 132, 135, 28);

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

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

// Draw three rectangles each with its own color

imagerectangle($canvas, 50, 50, 150, 150, $pink);

imagerectangle($canvas, 45, 60, 120, 100, $white);

imagerectangle($canvas, 100, 120, 75, 160, $green);

$num=5;

$mycolor=$white;

$color=0xff;

//рисование прямой

imageline($canvas, 0,0,500,500, $mycolor);

$points = array(20,20,50,HEIGHT/2,WIDTH/2,400,WIDTH-10,HEIGHT-10, WIDTH-10, 0);

//Рисование многоугольника

imagepolygon($canvas, $points, $num, $color);

// Output and free from memory

header('Content-Type: image/jpeg');

imagejpeg($canvas);

imagedestroy($canvas);

?>

GD поддерживает рисование дуги и эллипса, посредством функций imagearc() и im­ageellipse().

imageellipse($img,$centerx,$centery,$width,$height,$color);

Параметры $centerx и $centery задают координаты центра эллипса. Форма эллипса оп­ределяется парамет­рами $width и $height. Окружность является частным случаем эллипса. Синтаксис функции рисования дуги:

imagearc($img, $center_x, $center_y,$width,$height, $start_ang, $end_ang,$color);

Функция imagearc() требует два дополнительных параметра, $start_ang и $end_ang, ко­торые представляют угол в градусах. Рассмотрим пример

<?php //imagepr7.php

define("WIDTH", 200);

define("HEIGHT", 100);

$img = imagecreate(WIDTH+100, HEIGHT+200);

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

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

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

$center_x = (int)WIDTH/2; $center_y = (int)HEIGHT/2;

imageellipse($img, $center_x, $center_y, WIDTH, HEIGHT, $black);

imagearc($img, $center_x, $center_y, WIDTH-5, HEIGHT-5, 0, 360, $red);

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

imagepng($img);

?>