Когда-то столкнулся с вопросом формирования графики в PHP. В принципе, это не сложно. Главное, понять принцип работы.
Прежде всего, Вы переводите php в графический режим. И рисуете. Таким образом в 1 файле php может быть только изображение.
Если Вам нужно соместить изображение, то этот файл с формирующимся изображением необходимо вызывать тегом
Теперь рассмотрим пример кода:
header (“Content-type: image/png”);
$max_draw_width = 4000; // Максимальная ширина
$max_draw_height = 4000; // Максимальная высота
$img = imagecreate($max_draw_width, $max_draw_height); // Изображение
$ink = imagecolorallocate($img, 255, 255, 255);
ImageRectangle($img, 0, 0, $max_draw_width, $max_draw_height, $ink);
$ink = imageColorAllocate ($img, 0, 0 , 0 ); // Цвет в RGB
imageline($img,0,0,320-1,240-1,$ink);
ImageRectangle($img, 10, 10, 20, 20 , $ink);
imagepng($img);
imagedestroy($img);
?>
Вы можете применять большое количество команд для формирования изображения.
Вот набор команд и описание процесса рисования в PHP, которые я почерпнул на сайте http://archives.maillist.ru/43732/262896.html :
Сегодняшний выпуск на тему рисования в PHP. Это просто. Сначала создаётся изображение одной из нижеприведённых команд:
$image = imagecreate(width X, height Y) — Создаёт новую картинку c идентификатором $image и параметрами width X – ширина, height Y – высота. С которым в последующем и будем работать. Или можно по другому:
$image = imagecreatefromgif(“имя файла или URL”); — Создаёт картинку из Гифа
$image = imagecreatefromjpeg(“имя файла или URL”); — Создаёт картинку из Jpeg файла
$image = imagecreatefrompng(“имя файла или URL”); — Создаёт картинку из Png файла
$image = imagecreatefromwbmp(“имя файла или URL”); — Создаёт картинку из Bmp файла
Регистрируем цвета(добавляем в палитру), которые будем использовать:
$colorBackgr = imageColorAllocate($image, 255, 255, 255); // Белый Цвет
$colorForegr = imageColorAllocate($image, 255, 0, 0); // Красный Цвет
$textcolor = imageColorAllocate ($image, 0, 0 , 0 ); // Чёрный цвет (отсутствие какого либо цвета)
imageColorDeAllocate($colorForegr);
Удаляем цвет из палитры, если не нужен
Формат команды простой:
imageColorAllocate(идентификатор рисунка , RED, GREEN, BLUE);
RGB – это я выучил ещё со времён ZX Spectrum-а 8-)))
Затем рисуем фон, он у нас будет простым квадратом размером во всё поле рисунка:
imageFilledRectangle($image, X1, Y1, X2, Y2, $colorBackgr);
Эта команда рисует прямоугольник, залитый указанным цветом в идентификаторе рисунка $image по начальным координатам: X1, Y1 и конечными X2, Y2 Цвет: $colorBackgr
Можно просто нарисовать прямоугольник без заливки командой:
ImageRectangle($image, X1, Y1, X2, Y2, $color);
Или линию:
ImageLine($image, X1, Y1, X2, Y2, $color);
Есть интересная команда, рисования многоугольников( c замкнутым !!! контуром ), которая берёт координаты вершин из массива:
$arr = array(X1, Y1, X2, Y2, X3, Y3, X4, Y4, X5, Y5);
ImagePolygon($image, $arr, 5, $color);
$arr – массив, содержащий данные вершин многоугольника
5 – количество вершин, выгребающихся из массива
$color – цвет рамки многоугольника
Есть аналогичная команда для рисования многоугольника с заливкой:
ImageFilledPolygon($image, $arr, 5, $color);
// Отправляем заголовок Content-type
//header(“Content-type: image/gif”); Который говорит браузеру, что дальнейший поток данных будет КАРТИНКОЙ !
header(“Content-type: image/jpeg”);
// задаем чересстрочный режим
imageInterlace($image, 1);
// делаем цвет фона прозрачным
imageColorTransparent($image, $colorBackgr);
// и выводим изображение
//imageJPEG($image);
imageJPEG($image);
Вообще у меня при выводе изображения в формате PNG наблюдались всякие глюки, поэтому рекомендую делать всё в формате JPG
Можно выводить изображения в других форматах:
imagepng($image);
imagegif($image);
imagewbmp($image);
Тут вы думаю сами догадались, как это работает. НО !!! Tckb вы выводите изображение в другом формате, то его(этот формат) надо также указывать и при отправке заголовка, который отправляется ДО начала вывода потока данных:
header(“Content-type: image/png”);
header(“Content-type: image/gif”);
header(“Content-type: image/wbmp”);
Далее… Учитывая, что PHP-шное рисование используется в основном для счётчиков и вывода текста, поверх картинки, то приведу команды работы с текстом:
imagestring($image, 3, X, Y, “Текст надписи”, $textcolor);
Здесь:
$image – идентификатор рисунка.
3 – Размер шрифта.
X, Y – Верхняя левая точка начала надписи
“Текст надписи” – Сами догадайтесь, что это такое %)
$textcolor – Цвет текста, заданный выше командой ImageColorAllocate (он у нас чёрный)
imagestringup($image, 3, X, Y, “Текст надписи”, $textcolor);
Эта команда рисует вертикальный текст, тоесть сверху вниз. параметры теже.
imagettftext($image, размер, угол наклона текста, X, Y, $color, “шрифт xxx.ttf”, “сам текст собсно”);
Эта команда рисует текст, используя подключаемый стандартный файл шрифтов xxxx.ttf Параметры думаю объяснять не надо.
Также можно рисовать:
imageellipse($image, X, Y, ширина, высота, $color); // Эллипс
imagearc($image, CX, CY, W, H, S, e, $color); // Дуга, которая представляет из себя кусок окружности эллипса
Рисуется дуга, которая представляет из себя кусок эллипса
CX, CY – центр эллипса
W, H – высота, ширина
S – Стартовый угол дуги (если 0 то начало на три часа)
e – Конечный угол дуги
Счётчики на сайтах устроены совсем просто:
$image = imagecreatefromjpeg(“имя файла или URL”);
// Берём шаблон картинки, загружая её из файла
$textcolor = imagecolorresolve($image, R, G, B); // Это команда, которая возвращает номер цвета, который ближе всего в палитре шаблонной картинки к параметрам R, G, B Что совсем не значит, что он будет именно такой, какой вы хотите, ибо в палитре нужный цвет может просто отсутствовать. Поэтому лучше заранее выбрать этой командой подходящий номер цвета, а потом уже задать его номером
imagestring($image, 3, X, Y, “Текст надписи”, $textcolor);
// Пишем по картинке чё нить нужное и важное
header(“Content-type: image/jpeg”);
imageInterlace($image, 1);
// и выводим изображение
imageJPEG($image);
Затем данный скриптик пихаем в counter.php и на страничке её помещаем в таком вот виде:
Если вам надо в скрипте потереть картинку на идентификаторе, а потом снова её создать, то можно воспользоваться командой:
imagedestroy($image);
Так же, полезные алгоритмы есть на сайте: http://www.codenet.ru/webmast/php/gd/Pixel-Line.php
Нашел на сайте http://www.softtime.ru/group/id_group=15 целый ряд команд для работы с графикой (из библиотеки GDLib):
Библиотека GDLib
Название
Описание
exif_imagetype
Функция определяет формат изображения
exif_read_data
Функция читает заголовки файлов JPEG и TIFF и возвращает ассоциативный массив со свойствами файлов, размещенных в заголовках.
exif_thumbnail
Возвращает встроенные эскизы (уменьшенные изображения) из файлов форматов JPEG и TIFF.
gd_info
Возвращает ассоциативный массив с информацией об установленной библиотеке GD
getimagesize
Возвращает размер файла в пикселях и различную информацию об изображении
image2wbmp
Сохраняет WBMP-изображение в файл на диске
imagealphablending
Определяет режимы прорисовки полноцветных изображений
imageantialias
Включает и отключает опцию сглаживания при рисовании на изображении
imagearc
Рисует дугу эллипса
imagechar
Горизонтальное рисование символа
imagecharup
Вертикальное рисование символа
imagecolorallocate
Функция возвращает идентификатор цвета для изображения
imagecolorallocatealpha
Функция возвращает идентификатор цвета для изображения
imagecolorat
Функция возвращает индекс цвета
imagecolorclosest
Функция возвращает идентификатор цвета из цветовой палитры изображения который наиболее близко подходит к цвету RGB
imagecolorclosestalpha
Функция возвращает идентификатор цвета из цветовой палитры изображения, который наиболее близко подходит к цвету RGB
imagecolorclosesthwb
Возвращает индекс градации серого для цвета передаваемого RGB-компонентами
imagecolordeallocate
Функция уничтожает объект цвета
imagecolorexact
Возвращает идентификатор цвета из цветовой палитры изображения
imagecolorexactalpha
Возвращает идентификатор цвета из цветовой палитры изображения
imagecolormatch
Проверяет на сходство два изображения
imagecolorresolve
Функция ищет на изображении запрошенный цвет и возвращает его идентификатор
imagecolorresolvealpha
Функция ищет на изображении запрошенный цвет и возвращает его идентификатор
imagecolorset
Функция производит модификацию цветовой палитры изображения
imagecolorsforindex
Функция возвращает цвет, содержащийся в индексе цветовой палитры изображения
imagecolorstotal
Возвращает количество цветов в цветовой палитре изображения
imagecolortransparent
Устанавливает прозрачный цвет на изображении
imagecopy
Функция копирует одно изображение на другое
imagecopymerge
Функция копирует с объединением одну область изображения на другую
imagecopymergegray
Копирование с объединением одного изображения на другое
imagecopyresampled
Функция копирует прямоугольные области с одного изображения на другое
imagecopyresized
Функция копирует прямоугольные области с одного изображения на другое
imagecreate
Создает пустое изображение
imagecreatefromgd
Создает новое изображение из файла формата GD
imagecreatefromgd2
Создает новое изображение из файла формата GD2
imagecreatefromgd2part
Создает новое изображение из прямоугольной области файла
imagecreatefromgif
Создает изображение из файла формата GIF
imagecreatefromjpeg
Создает изображение JPEG из файла
imagecreatefrompng
Создает изображение из файла формата PNG.
imagecreatefromstring
Создает новое изображения из потока
imagecreatefromwbmp
Создает изображение из файла формата WBMP
imagecreatefromxbm
Создает изображение из файла формата XBM
imagecreatefromxpm
Создает изображение из файла формата XPM.
imagecreatetruecolor
Создает пустое полноцветное изображение
imagedashedline
Функция рисует штрихпунктирную линию
imagedestroy
Функция освобождает память, занятую изображением
imageellipse
Функция рисует эллипс
imagefill
Функция производит заливку области внутри контура
imagefilledarc
Рисует сектор эллипса и осуществляет его заливку
imagefilledellipse
Рисует закрашенный эллипс
imagefilledpolygon
Рисует закрашенный многоугольник
imagefilledrectangle
Рисует закрашенный прямоугольник
imagefilltoborder
Выполняет заливку области внутри контура
imagefilter
Применяет фильтр к изображению
imagefontheight
Возвращает высоту символов шрифта
imagefontwidth
Возвращает ширину символов шрифта
imageftbbox
Вычисляет размеры прямоугольника, ограничивающего строку, написанную шрифтом Free Type 2
imagefttext
Записывает строку на изображение с помощью шрифта Free Type 2
imagegammacorrect
Функция, осуществляющая гамма-коррекцию изображения
imagegd
Записывает GD2-изображение на диск
imagegd2
Записывает GD2-изображение на диск
imagegif
Записывает изображение на диск в формате GIF
imageinterlace
Включает и выключает чересстрочное формирование изображения
imageistruecolor
Определяет является ли изображение полноцветным.
imagejpeg
Записывает изображение на диск в формате JPEG
imagelayereffect
Устанавливает флаг смешивания для использования в эффектах наложения слоев
imageline
Рисует линию
imageloadfont
Загружает пользовательский растровый шрифт из файла
imagepalettecopy
Копирует цветовую палитру из изображения-источника в изображение-приемник
imagepng
Записывает изображение на диск в формате PNG
imagepolygon
Рисует многоугольник
imagepsbbox
Вычисляет размеры прямоугольника, в который вписана строка, написанная шрифтом PostScript Type1.
imagepscopyfont
Создает копию PostScript Type1 шрифта
imagepsencodefont
Загружает вектор кодировки из файла
imagepsextendfont
Сжимает или растягивает PostScript Type1 шрифт
imagepsfreefont
Освобождает память занятую шрифтом
imagepsloadfont
Загружает шрифт в формате PostScript Type1 из файла
imagepsslantfont
Осуществляет наклон PostScript Type1 шрифта
imagepstext
Записывает строку на изображении PostScript Type1 шрифтом
imagerectangle
Рисует прямоугольник
imagerotate
Осуществляет поворот изображение
imagesavealpha
Применяется для установки прозрачности изображений в формате PNG
imagesetbrush
Устанавливает кисть, используемую при рисовании линий и контуров
imagesetpixel
Рисует пиксель
imagesetstyle
Устанавливает стиль, используемый всеми функциями рисования линий и контуров
imagesetthickness
Устанавливает толщину линий при рисовании
imagesettile
Устанавливает изображение в качестве фоновой заливки
imagestring
Горизонтальное рисование строки
imagestringup
Вертикальное рисование строки
imagesx
Функция возвращает ширину изображения image в пикселях
imagesy
Функция возвращает высоту изображения image в пикселях
imagetruecolortopalette
Конвертирует полноцветное изображение в изображение с цветовой палитрой с ограниченным числом цветов
imagettfbbox
Вычисляет размеры прямоугольника, в который вписана строка, написанная TrueType-шрифтом
imagettftext
Записывает строку на изображении TrueType-шрифтом
imagetypes
Возвращает формат изображений, которые поддерживаются текущей реализацией PHP и библиотеки GD.
imagewbmp
Записывает изображение на диск в формате WBMP
imagexbm
Записывает изображение на диск в формате XBM
image_type_to_mime_type
Определяет mime-типы для констант imagetype, возвращаемых функциями getimagesize(), exif_read_data(), exif_thumbnail(), exif_imagetype().
iptcembed
Внедряет двоичные данные в заголовок файла в формате JPEG
iptcparse
Функция осуществляет разбор и выдачу информации представленной в двоичном виде в IPTC-блоках
jpeg2wbmp
Конвертирует изображение в формате JPEG в изображение формата WBMP
png2wbmp
Конвертирует изображение в формате PNG в изображение формата WBMP
read_exif_data
Является псевдонимом функции exif_read_data()
https://corp2.info/razrabotka-i-sozdanie-sajtov-internet-magazinov-veb-proektov-kiev-1038.html
Leave a Reply