у меня есть изображение, я его открываю, и мне нужно на него наложить путь, тоесть мне нужно, чтобы в строке, в запросе передовались параметры, т.е. координаты... не совсем понимаю как это сделать, путаюсь с передачей параметров координат, пажалуйста помогите ктонибуть, очень-очень срочно нужно, заранее благодарен. цель: сделать карту местности, на которую нужно накладывать путь.
Посмотрите класс jpgraph В комплекте с ним идет добрая сотня примеров, в том числе и под вашу задачу.
Так в чем проблема, в передачи координат? Можно сформировать параметры, например, таким образом: ?x[]=1&y[]=2&x[]=3&y=5 и в вызываемом скрипте координаты будут доступны через массивы $_GET['x'] и $_GET['y']
ок, с этим понятно, тоесть x и y будут масивами, но а как рисовать линию imageline так, чтобы она была от точки к точки?
сделал так)) координаты передаю так: localhost/?arr[]=146.344&arr[]=157.70&arr[]=514.400&arr[]=572.435&arr[]=565.450&th=6 все работает. Код (Text): function imagelinethick($image, $x1, $y1, $x2, $y2, $color, $thick = 1) { if ($thick == 1) { return imageline($image, $x1, $y1, $x2, $y2, $color); } $t = $thick / 2 - 0.5; if ($x1 == $x2 || $y1 == $y2) { return imagefilledrectangle($image, round(min($x1, $x2) - $t), round(min($y1, $y2) - $t), round(max($x1, $x2) + $t), round(max($y1, $y2) + $t), $color); } $k = ($y2 - $y1) / ($x2 - $x1); $a = $t / sqrt(1 + pow($k, 2)); $points = array( round($x1 - (1+$k)*$a), round($y1 + (1-$k)*$a), round($x1 - (1-$k)*$a), round($y1 - (1+$k)*$a), round($x2 + (1+$k)*$a), round($y2 - (1-$k)*$a), round($x2 + (1-$k)*$a), round($y2 + (1+$k)*$a), ); imagefilledpolygon($image, $points, 4, $color); return imagepolygon($image, $points, 4, $color); } header ("Content-type: image/jpg"); $im = imagecreatefromgif("map.gif"); $green = imagecolorallocate($im, 0, 189, 31); $color = imagecolorallocate($im, 255, 0, 0); $as0=explode('.',$arr[0]); $x=$as0[0]; $y=$as0[1]; for ($i = 0; $i <= count($arr)-1; $i++) { $as=explode('.',$arr[$i]); $as2=explode('.',$arr[$i+1]); $x1=$as[0]; $y1=$as[1]; $x2=$as2[0]; $y2=$as2[1]; if (($x2 == "") or ($y2 == "")) { $x2=$as[0]; $y2=$as[1]; } imagesetpixel($im,$x,$y,$color); imagelinethick($im,$x1,$y1,$x2,$y2,$color,$th); } imagegif($img); теперь у меня другая проблема) файл map.gif очень большой (более 5000 точек шириной), мне нужно сделать так, чтобы выводилось тот участок изображения, на ктором наложен путь, но при этом он не должен привышать размера 730 х 300, т.е. видимо придется еще и масштабировать, есть мысли как это реализовать? заранее благодарен))
Я бы сделал так: по координатам пути можно выделить тот кусок который тебе нужен. Точнее нам нужен: - верхний левый угол - высоту и ширину области Далее создаешь новое изображение (пока пустое) тех размеров, которые нужны на экране и функцией imagecopyresized подтягиваешь туда необходимую область. Вот и все собственно.