:: Не фоксом единым
Помогите разобраться с графикой в php.
Саян
Автор

Сообщений: 57
Дата регистрации: 26.07.2007
Начал пробовать писать кадастровый паспорт на php, не могу найти причину отсутствия изображения, точнее оно есть, но нет линий (((
<?
session_start();
$id = $_SESSION['id'];
header('Content-type: image/png');
$image = imagecreate(800, 800);
$w = ImageColorAllocate($image, 255, 255, 236);
$b = ImageColorAllocate($image, 0, 0, 0);
$points = mysql_query("SELECT * FROM b_koord_parcels WHERE ID = $id");
$x_max = mysql_result($points,$c,'x');
$x_min = mysql_result($points,$c,'x');
$y_max = mysql_result($points,$c,'y');
$y_min = mysql_result($points,$c,'y');
$c = 0;
for($c;$c<mysql_numrows($points);$c++)
{
if (mysql_result($points,$c,'x') > $x_max) $x_max = mysql_result($points,$c,'x');
if (mysql_result($points,$c,'x') < $x_min) $x_min = mysql_result($points,$c,'x');
if (mysql_result($points,$c,'y') > $y_max) $y_max = mysql_result($points,$c,'y');
if (mysql_result($points,$c,'y') < $y_min) $y_min = mysql_result($points,$c,'y');
}
if ($x_max>=$y_max) $kf = 800/($x_max-$x_min); else $kf = 800/($y_max-$y_min);
$c = 0;
for($c;$c<mysql_numrows($points);$c++)
{
$x1 = round($kf*(mysql_result($points,$c,'x')-$x_min),0);
$y1 = round($kf*(mysql_result($points,$c,'y')-$y_min),0);
$c++;
$x2 = round($kf*(mysql_result($points,$c,'x')-$x_min),0);
$y2 = round($kf*(mysql_result($points,$c,'y')-$y_min),0);
imageline($image, $x1, $y1, $x2, $y2, $b);
}
imagepng($image);
imagedestroy($image);
?>
Если цикл прогнать вне графического обработчика, то все координаты он выводит, а в цикле ничего не отрисовывает.
Ratings: 0 negative/0 positive
Re: Помогите разобраться с графикой в php.
Vedmak

Сообщений: 5949
Откуда: CiTY
Дата регистрации: 30.10.2003
чем рисуете ?
Ratings: 0 negative/0 positive
Re: Помогите разобраться с графикой в php.
sphinx

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Цитата:
Если цикл прогнать вне графического обработчика, то все координаты он выводит, а в цикле ничего не отрисовывает.

Попробуй задать вопрос на PHP-форуме, там с этим должны помочь быстрее. ;)


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Помогите разобраться с графикой в php.
Саян
Автор

Сообщений: 57
Дата регистрации: 26.07.2007
Спасибо за внимание, но на php-форуме просто поржали
Однако же я все сделал, все выводится, стала другая задача повернуть координаты на угол, полный бред получается:
Все оригинально:
// Выбираем все координаты точек участка по id
$points = mysql_query("SELECT * FROM b_koord_parcels WHERE ID = $id");
// Заполняем таблицу на сервере координатами точек c поворотом
$i = 0;
for($i;$i<mysql_numrows($points);$i++)
{
$x = mysql_result($points,$i,'x');
$y = mysql_result($points,$i,'y');
$x = $x*cos(deg2rad(270))-$y*sin(deg2rad(270));
$y = $x*sin(deg2rad(270))+$y*cos(deg2rad(270));
$point = mysql_result($points,$i,'sunmb');
$kad = mysql_result($points,$i,'CadastralNumber');
mysql_query(" INSERT INTO _Lines (x, y, point, sid, kadn) VALUES ($x, $y, $point, '$SID', '$kad') ");
}
// Ищем минимальные значения
$x_min = mysql_result(mysql_query("SELECT MIN(x) AS mx FROM _Lines WHERE sid = '$SID'"),0,'mx');
$y_min = mysql_result(mysql_query("SELECT MIN(y) AS my FROM _Lines WHERE sid = '$SID'"),0,'my');
// Приводим координаты к упрощенному виду
mysql_query("UPDATE _Lines SET x = x-$x_min, y = y-$y_min WHERE sid = '$SID'") or die('!!');

вот процедура вывода границ участка:

session_start();
include_once('mem.php');
mysql_connect($host, $log, $pas) or die('Error to connect server');
mysql_select_db($db) or die('Error to select database');
$SID = session_id();
header('Content-type: image/png');
// Находим максимальные координаты для вычисления коэффициента
$x_max = mysql_result(mysql_query("SELECT MAX(x) AS mx FROM _Lines WHERE sid = '$SID'"),0,'mx');
$y_max = mysql_result(mysql_query("SELECT MAX(y) AS my FROM _Lines WHERE sid = '$SID'"),0,'my');
if ($x_max>$y_max) $kf = 760/$x_max; else $kf = 760/$y_max;
$image = imagecreate(round($x_max*$kf)+40,round($y_max*$kf)+40);
$w = ImageColorAllocate($image, 255, 255, 255);
$b = ImageColorAllocate($image, 0, 0, 0);
$points = mysql_query("SELECT * FROM _Lines WHERE sid = '$SID'");
$i = 0;
for($i;$i<mysql_numrows($points)-1;$i++)
{
$x1 = round($kf*(mysql_result($points,$i,'x')),0)+20;
$y1 = round($kf*(mysql_result($points,$i,'y')),0)+20;
$p1 = mysql_result($points,$i,'point');
$kadn = mysql_result($points,$i,'kadn');
$x2 = round($kf*(mysql_result($points,$i+1,'x')),0)+20;
$y2 = round($kf*(mysql_result($points,$i+1,'y')),0)+20;
imageline($image, $x1, $y1, $x2, $y2, $b);
imagestring($image,2,$x1,$y1+5,$p1,1);
imagefilledellipse($image,$x1,$y1,5,5,$b);
}
imagestring($image,5,($x_max-$x_min)*$kf/2-50,($y_max-$y_min)*$kf/2,$kadn,1);
mysql_query("DELETE FROM _Lines WHERE sid = '$SID'");
imagepng($image);
imagedestroy($image);



Исправлено 4 раз(а). Последнее : Саян, 15.08.16 16:08
Ratings: 0 negative/0 positive
Re: Помогите разобраться с графикой в php.
Сергей Филиппов

Сообщений: 260
Откуда: Hannover
Дата регистрации: 05.10.2000
Есть библиотека "jpgraph", которая всё рисует. Я ей очень сложные графики рисовал


------------------
В действительности всё не так, как на самом деле...
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2024 Fox Club 
Яндекс.Метрика