Obrazki, nanoszenie, aktywny link...

0

Witam, mam pewien problem, pobieram z bazy danych mapke ort!, rysuje na niej czytniki z pliku.png na określonych pozycjach x,y z bazy. Wszystko z wykorzystaniem GD. Teraz jak zrobić żeby te czytniki.png były aktywnymi lilnkami? Poniżej cały skrypt:

include ("inc_config.php");
             include ("inc_baza.php");
             include ("inc_get_post_vars.php");

if (myGET('table', '0'))
{
  $img_table=myGET('table', '0');
}

if (myGET('field', '0'))
{
  $img_field=myGET('field', '0');
}

if (myGET('id', '0'))
 {
  $img_id=myGET('id', '0');
 }
else
 {
  $img_id=0;
 }

$sql = pg_query($conn, 'SELECT mapa FROM wizualizacja WHERE id='.$img_id);

$glowice = pg_query($conn, 'SELECT wg.pos_x, wg.pos_y FROM wizualizacja_glowice wg
WHERE wg.id_wizualizacja='.$img_id);

$data = pg_unescape_bytea(pg_fetch_result($sql, 0, 'mapa'));

header('Content-Type: image/png');

$background = imagecreatefromstring($data);
$insert = imagecreatefrompng("czytniki.png");

imagecolortransparent($insert,imagecolorexact($insert,255,0,255));

$insert_x = imagesx($insert);
$insert_y = imagesy($insert);

$count=pg_num_rows($glowice);

function linki()
{
print '<MAP NAME="mapa">';
print '<AREA SHAPE="rect" BORDER COORDS="2,31,31,2" HREF="link.php" TITLE="Czytnik" Target="_blank">';
print '</MAP>';
print '<IMG SRC="czytniki.png">';
}

for ($x=0;$x<$count;$x++) {
imagecopymerge($background,$insert,pg_fetch_result($glowice, $x, 'pos_x'),pg_fetch_result($glowice, $x, 'pos_y'),0,0,$insert_x,$insert_y,100);
}

imagejpeg($background,"",100);
0
function linki()
{
$wyswietl=<<<KODZIK
	<map name="mapa">
	<area href="link.php" style="border:1px solid #000000;" shape="rect" coords="2, 31, 31, 2" title="Czytnik" target="_blank">
	</map>
	<img src="czytniki.png" usemap="mapa">
KODZIK;
echo $wyswietl;
}

smacznego ;P

0

voldenet a czego się tyczy twój post ?

$linki = Array(
  Array(2,31,31,2,'link.php')
);

function linki(){
  global $linki;
  echo '<MAP NAME="mapa">';
  foreach($linki as $link){
    $href = array_pop($link); ?>
    <AREA SHAPE="rect" BORDER COORDS="<?php
echo implode(',', $link) ?>" HREF="<?php echo $href ?>" TITLE="Czytnik" Target="_blank"><?php
  }
  echo '</MAP>';
  echo '<IMG SRC="czytniki.png" usemap="mapa">';
}

for ($x=0;$x<$count;$x++) {
  imagecopymerge($background, $insert,
    $pos_x = pg_fetch_result($glowice, $x, 'pos_x'),
    $pos_y = pg_fetch_result($glowice, $x, 'pos_y'),
    0, 0, $insert_x,$insert_y,100);
  $linki[] = Array(
    $pos_x,
    $pos_y,
    $pos_x + $insert_x,
    $pos_y + $insert_y,
    'link.php?id=' . $x
  );
}

imagejpeg($background, '', 100);
0

Kurcze zrobiłem tak jak na pisałeś ale niestety bez skutecznie :/ Wszystko ładnie się rysuje ale czytniki odnośnikami dalej nie są.

0

Niestety bez rezultatów, zobaczcie czy gdzieś nie mam błedu, bo jak dla mnie jest ok tyle że te linki dalej nie działają.

 header('Content-Type: image/png'); //wypuszczenie naglowka!

           //includy///////////////////////////////
             include ("inc_config.php");
             include ("inc_baza.php");
             include ("inc_get_post_vars.php");
           ///////////////////////////////////////

//sprawdzenie zmiennych czy istnieja
 if (myGET('table', '0')!='0')
 {
  $img_table=myGET('table', '0');
 }

 if (myGET('field', '0')!='0')
 {
  $img_field=myGET('field', '0');
 }

 if (myGET('id', '0')!='0')
 {
  $img_id=myGET('id', '0');
 }
 else
 {
  $img_id=0;
 }

 if (myGET('grupa', '0')!='0')
 {
  $grupa=myGET('grupa', '0');
 }
 else
 {
  $grupa=0;
 }//koniec zmiennych


 if (myGET('id', '0')=='0') {
 brak_foto();
  }

 $sql = pg_query($conn, 'SELECT '.$img_field.' FROM '.$img_table.' WHERE id='.$img_id); //zapytanie sql
 if (pg_result($sql, 0, $img_field)=='') { //jesli pole zwroci pusty wiersz wywali obrazek brak zdjecia...
 brak_foto();
  }
 $glowice = pg_query($conn, 'SELECT wg.pos_x, wg.pos_y FROM wizualizacja_glowice wg
WHERE wg.id_wizualizacja='.$img_id); //zapytanie sql o pozycje glowic na mapach

 $data = pg_unescape_bytea(pg_fetch_result($sql, 0, 'mapa')); //dekodowanie mapy "bytea"

 function brak_foto() //funkcja brak zdjecia
     {
  $Image = imagecreatefrompng("images/no_map.png");
  Imagepng($Image);
      }

 $background = imagecreatefromstring($data);
 $insert = imagecreatefrompng("images/czytniki.png");

 imagecolortransparent($insert,imagecolorexact($insert,255,0,255));

 $insert_x = imagesx($insert);
 $insert_y = imagesy($insert);

 $count=pg_num_rows($glowice);

$linki = Array(
  Array(2,31,31,2,'links.php')
);

function linki(){
  global $linki;
  echo '<MAP NAME="mapka">';
  foreach($linki as $link){
    $href = array_pop($link); ?>
    <AREA SHAPE="rect" BORDER COORDS="<?php
echo implode(',', $link) ?>" HREF="<?php echo $href ?>" TITLE="Czytnik" Target="_blank"><?php
  }
  echo '</MAP>';
  echo '<IMG SRC="images/czytniki.png" USEMAP="#mapka">';
}

for ($x=0;$x<$count;$x++) {
  imagecopymerge($background, $insert,
    $pos_x = pg_fetch_result($glowice, $x, 'pos_x'),
    $pos_y = pg_fetch_result($glowice, $x, 'pos_y'),
    0, 0, $insert_x,$insert_y,100);
  $linki[] = Array($pos_x, $pos_y, $pos_x + $insert_x, $pos_y + $insert_y, 'link.php?id=' . $x);
}

imagejpeg($background, '', 100);
0

no ale nie wywołujesz "linki" w ogóle teraz zobaczyłem
chyba żę to nie jest cały kod
musisz to zrobić na dwa razy, jeden plik powiedzmy generuje, nakłada to wszystko i wypluwa png, drugi robi to samo tyle że nic nie nakłada, nie bawi się w graficzki a tylko wypluwa kod html wygenerowany przez "linki", tylko wtedy w tej funkcji linki dajesz img src nie na ten png tylko na ten pierwszy skrypt

0

Hmmm, więc tak,
To jest skrypt pierwszy tutaj umieściłem to co mówiłeś

//sprawdzenie czy istnieja zmienne

 if (myGET('grupa','0')!='')
 {
  $img_id=myGET('grupa','0');
 }
 //koniec sprawdzania zmiennych


$glowice = pg_query($conn, 'SELECT wg.pos_x, wg.pos_y FROM wizualizacja_glowice wg
WHERE wg.id_wizualizacja=2');

 $count=pg_num_rows($glowice);

$linki = Array(
  Array(2,31,31,2,'links.php')
);

function linki($linki){
  echo '<MAP NAME="mapka">';
  foreach($linki as $link){
    $href = array_pop($link); ?>
    <AREA SHAPE="rect" BORDER COORDS="<?php
echo implode(',', $link) ?>" HREF="<?php echo $href ?>" TITLE="Czytnik" Target="_blank"><?php
  }
  echo '</MAP>';
  echo '<IMG SRC="mapa.php?table=wizualizacja&field=mapa&id=2" USEMAP="#mapka">';
}

linki($linki);

BORDER="0"></CENTER>';
?>

I jest ok, mapa się wyświetla, tylko że ta jedna zdefiniowana w w zmiennej $linki.
Tylko czemu reszty nie linkuje tylko w jednym miejscu na poczatku mapy.

W skrypcie mapa.php zostawiłem:

 for ($x=0;$x<$count;$x++) {
  imagecopymerge($background, $insert,
    $pos_x = pg_fetch_result($glowice, $x, 'pos_x'),
    $pos_y = pg_fetch_result($glowice, $x, 'pos_y'),
    0, 0, $insert_x,$insert_y,100);
  $linki[] = Array($pos_x, $pos_y, $pos_x + $insert_x, $pos_y + $insert_y, 'link.php');
 }

 imagejpeg($background, '', 100); //polaczenie mapy z glowicami + ustwienia jakosci = 100%
0

ale w skrypcie pierwszym też daj pętlę, tylko bez funkcji imagecopymerge (usuń drugą linię i piątą i przy 3 i 4 zamiast przecinków na końcu postaw średniki i dopiero po tej pętli wyświetl linki, a w drugim pliku możesz wywalić linię $linki[] = ... i całą funkcję linki, tylko to wszystko wyżej zostaw też (te dwa skrypty bardzo podobne powinny być)

0

Super! Dzięki Ci wielkie, udało się :] Jeszcze raz Dzięki za poświęcenie czasu i pomoc. [soczek]

1 użytkowników online, w tym zalogowanych: 0, gości: 1