| |
|
|
| | В файле лежат координаты многоугольников:
$str_coords='535,195,556,197,562,212,538,220';
Многоугольнички маленькие, с максимальной диагональю около 30 пиксел. Мне нужно достать из файла строки с координатами, нарисовать эти многоугольнички и расставить их на странице в соответствии с этими координатами. Но вот в чём проблема: размер холста мне тоже нужен маленький, к примеру:
$img = imagecreatetruecolor(30, 20);
Но если я делаю такой размер холста, то отрисованный многоугольник на него не попадает и в итоге в графический файл записывается только пустой холст.
Вот дальнейший тестовый код:
$arr_coords=explode(',',$str_coords);
$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,'img1.png');
imagedestroy($img);
echo "<img src=img1.png /></div>";
|
Если сделать размер холста 600Х600, то многоугольник на него попадёт, но мне не годится файл с такими размерами. Как можно выйти из такой ситуации?
Спасибо. | |
| |
|
|
| |
|
|
| |
для: coloboc66
(14.03.2008 в 09:42)
| | | Доброе время суток.
Вы не там "копаете", Ваша проблема с разбором файла, т.е. неверно получаете массив координат. Ваш пример слегка модифицированный работает!
<?php
$coord = array(11, 8, 0, 7, 25, 15, 25, 2, 10, 8, 25, );
$img = imagecreatetruecolor(30, 20);
//заливаем фон
imagecolorallocate($img, 255, 255, 255);
// рисуем многоугольник
$color = imagecolorallocate($img, 0, 0, 255);
imagefilledpolygon($img, $coord, 5, $color);
#imagecolortransparent($img, $color);
Header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
##echo "<img src='img1.png'>";
?>
|
| |
| |
|
|
| |
|
|
| |
для: vitali
(14.03.2008 в 11:35)
| | | Этот пример работает потому, что размеры палитры захватывают координаты вершин. В противном случае он работать не будет. Попробуйте установить иксы в районе 500, а размеры холста(палитры) оставить прежними. | |
| |
|
|
| |
|
|
| |
для: coloboc66
(14.03.2008 в 12:35)
| | | Есть такая присказка: ...вылить на голову ушат с водой укрывшись фиговым листком - непромочившись.
Вы хотите своим примером опровергнуть эту истину. Все ваши манипуляции с GD-функциями как и у художника ограничиваются размерами палитры. Увы. | |
| |
|
|
| |
|
|
| |
для: vitali
(14.03.2008 в 13:52)
| | | И всё ж таки выход есть - пересчитать координаты относительно левого верхнего угла холста. | |
| |
|
|
| |
|
|
| |
для: coloboc66
(14.03.2008 в 17:15)
| | | Так и нужно вообще-то делать, насколько я понимаю вопрос )) | |
| |
|
|
| |
|
|
| |
для: coloboc66
(14.03.2008 в 17:15)
| | | СОздайте сперва холст нужного размера, а потом рисуйте на нем все что хотите. Вы же пытаетесь вывести все по отдельности. | |
| |
|
|