|
| |
|
|
| |
для: coloboc66
(13.03.2008 в 15:44)
| | | Синтаксис:
imagefilledpolygon() -- Рисование заполненного многоугольника
(Draw a filled polygon)
Описание: bool imagefilledpolygon ( resource image, array points, int num_points, int color )
Создание заполненного многоугольника в изображении
Список параметров
image - Ресурс изображения, возвращанный одной из функций создания изображениq, как например,
imagecreatetruecolor()
points - Массив, содержащий x и y координаты граней многоугольника последовательно, т.е
точки[0] = x0, точки[1] = y0, точки[2] = x1, точки[3] = y1, и т.п.
num_points - Общее число точек (граней) Total number of points (vertices). Общее число граней,
должно быть большим чем 3
color - Цветной идентификатор созданный imagecolorallocate()
Проверьте на корректность Ваш массив, который Вы сформировали из файла.
И палитру сделайте не полноцветной, если хотите иметь прозрачность. | |
| |
|
|
| |
|
|
| |
для: vitali
(13.03.2008 в 13:22)
| | | Ну хорошо, а вот такой вопрос: у меня координаты для вершин многоугольника хранятся в файле в виде строк вида:
one|535,195, 556,197, 562,212, 538,220
two|535,220, 569,220, 562,231, 541,231
Я делаю так:
$items_arr=file('fname.dat');
foreach($items_arr as $row)
{
$row=stripslashes(trim($row));
$row=explode('|',$row);
$arr_coords=explode(',',$row[1]);
$width=...; $height=...; //тут вычисляю размеры холста
$img = imagecreatetruecolor($width,$height);
$white=imagecolorallocate($img, 255, 255, 255);
imagefill($img,0,0,$white);
$color = imagecolorallocate($img, 0, 0, 255);
//imageColorTransparent($img,$white);
imagefilledpolygon($img,$arr_coords,count($arr_coords)/2,$color);
imagepng($img,"i/$row[0].png");
imagedestroy($img);
echo "<img src=i/$row[0].png />";
}
|
Но в итоге получаю только пустые холсты. Правильный ли у меня синтаксис для функции imagefilledpolygon() ??? | |
| |
|
|
| |
|
|
| |
для: coloboc66
(13.03.2008 в 11:58)
| | | Ответ наверное здесь:
Замечание: Задание прозрачного цвета поддерживают только палитровые изображения, но не полноцветные
т.е изображения созданные imageCreateFromJpeg() или imageCreateTrueColor() не могут его
содержать
Пример: $ts = imagecolorclosest($im, 0, 255, 0);
imagecolortransparent($im, $ts); | |
| |
|
|
| |
|
|
| |
для: vitali
(13.03.2008 в 11:55)
| | | Может и можно, только у меня пока не получается с приведенным выше примером. | |
| |
|
|
| |
|
|
| |
для: coloboc66
(13.03.2008 в 11:07)
| | | 1) Как построить многоугольник из массива точек - это понятно из предложенных примеров.
2) наложить его в определённое координатами х и у место страницы?
Громоздкий вариант:
- сохранить картинку в /tmp (не забыть в конце работы файл удалить);
- затем используя контейнер <div с указанныими координатами> <img src="/tmp/имя_картинки"> ...</div> поместить в указанное место.
3) мешает непрозрачный холст?
А его нельзя убить функцией imagecolortransparent() -- Определение цвета как прозрачный? | |
| |
|
|
| |
|
|
| |
для: sim5
(13.03.2008 в 11:38)
| | | Почему-то цвет холста (фона) не делается белым?
$img = imagecreatetruecolor(400, 300);
//заливаем фон
imagecolorallocate($img, 255, 255, 255);
// рисуем многоугольник
$color = imagecolorallocate($img, 0, 0, 255);
imagefilledpolygon($img, array (
0, 0,
100, 200,
350, 200,
100, 50,
150, 20
),
5,
$color);
imagepng($img,'img1.png');
imagedestroy($img);
echo "<img src='img1.png'>";
|
| |
| |
|
|
| |
|
|
| |
для: coloboc66
(13.03.2008 в 11:07)
| | | Цвет холста (а без него никак нельзя) берете равный цвету страницы, получаете картинку верхние левые координаты которой привязываете к заданным Х, Y на странице. | |
| |
|
|
| |
|
|
| |
для: vitali
(13.03.2008 в 10:04)
| | | За предложение поразвлечься спасибо, но мне нужно решить конкретную задачу: по массиву точек построить многоугольник и наложить его в определённое координатами х и у место страницы. Как это сделать? Во-первых, мешает непрозрачный холст, потому что сам по себе холст мне на странице не нужен... | |
| |
|
|
| |
|
|
| |
для: coloboc66
(13.03.2008 в 09:08)
| | | Развлекитесь:
<?php ## Рисование заполненного текстурой многоугольника
/**
** (кол-во углов вычисляются с помощью генератора случайных чисел после каждого обновления страницы)
**/
$fname = "…/fon.jpg"; // Ваша текстура многоугольника
$tile = imagecreatefromjpeg($fname); //текстура фона
$image = imagecreatetruecolor(800, 800); //создаем палитру
imagefill($image, 0, 0, imagecolorallocate($image, 0, 255, 0)); //закрашиваем область определ.(.)0,0
imagesettile($image, $tile); //заполняем образ текстурой
// установление массива точек для многоугольника (set up array of points for polygon)
$p = array();
for ($i=0; $i<9; $i++)
{
array_push($p, mt_rand(0, imagesx($image)), mt_rand(0, imagesy($image)));
//Добавляем произвольные эл-ты в конец массива
}
// Рисуем заполненный многоугольник (draw a polygon)
imagefilledpolygon($image, $p, count($p)/2, IMG_COLOR_TILED);
// flush image
header('Content-type: image/jpeg');
imagejpeg($image, '', 100); //качество картинки = 100
imagedestroy($image);
?>
|
| |
| |
|
|
| |
|
|
| |
для: Max Vasin
(12.03.2008 в 18:17)
| | | А без фона (холста) никак нельзя? И он обязательно должен быть прямоугольным? А как бы так сделать, чтобы фон повторял форму многоугольника, т.е. чтобы можно было наложить на страницу не прямоугольник, а многоугольник? | |
| |
|
| |
|