• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Image Map generieren?

mo

Administrator
Teammitglied
Hi,
folgende Situation:
Ich habe ein Bild auf dem Server liegen und will dafür mit PHP automatisch eine Image-Map generieren. Es reicht vollkommen aus, wenn ich ein shape="rect" verwende.
Nur wie muss der zugehörige PHP-Code aussehen?
Klar ist, dass ich zunächst die Bilddimensionen auslesen muss. Dann wird in einer Schleife hochgezählt und so die einzelnen Koordinaten der Shapes versetzt. Anschliessend geb ich alles aus und fertig.
Mein bislang (nicht funktionierender!) Code sieht so aus:
$raster = 9;
$picinfo = getimagesize($file);
echo "<map name=\"map\">";
for ($i = 0; $i < $picinfo[0]; $i++) {
$obenlinks = $i;
$obenrechts = $obenlinks+$raster;
if ($obenrechts > $picinfo[0]) {
$obenrechts = $picinfo[0];
$obenlinks = $i+$raster;
}
$untenlinks = $obenlinks+$raster;
$untenrechts = $untenlinks+$raster;
if ($untenrechts > $picinfo[1]) {
$untenrechts = $picinfo[1];
$untenlinks = $i+$raster;
}
$map .= "<area shape=\"rect\" coords=\"$obenlinks,$obenrechts,$untenlinks,$untenrechts\" href=\"$i\" alt=\"\">\n";
$i = $i+$raster;
}
echo $map;
echo "</map>";
echo "<img src=\"".$file."\" ".$picinfo[3]." usemap=\"#map\">";

Da wirds wieder mal schmerzhaft deutlich, dass ich kein Mathematiker bin..
So, hat jemand ne Idee?
bye,
mo
 
Hallo!

Ich glaube du hast dir da ein Array kaputt gemacht:

$picinfo = getimagesize($file); -> String(Glaub ich, oder float)

$picinfo[0] --> ??

picinfo[0] kann es somi nicht mehr geben.
 
hi,
nein, das array funktioniert, die werte sind da. das problem kommt erst weiter unten.
bye,
mo
 
hmmm also das Ganze sieht etwas verwirrend aus... vor allem durch die Bezeichnungen obenlinks untenlinks, usw....

PHP:
$raster = 9;
$picinfo = getimagesize($file);
echo "<map name=\"map\">";
$rows = ($picinfo[1] / $raster);
$cols = ($picinfo[0] / $raster);
for ($row = 0; $row < $rows; $row++) 
{
  $top = $row * $raster;
  $bottom = $top + $raster;
  if ($bottom > $picinfo[1]) 
  {
    $bottom = $picinfo[1];
  }
  for ($col = 0; $col < $cols; $col++) 
  {
    $left = $col * $raster;
    $right = $left + $raster;
    if ($right > $picinfo[0]) 
    {
      $right = $picinfo[0];
    }
   $map .= "<area shape=\"rect\" coords=\"$left,$top,$right,$bottom\" href=\"".($col + $row * $cols)."\" alt=\"\">\n";
  }
}
echo $map;
echo "</map>";
echo "<img src=\"".$file."\" ".$picinfo[3]." usemap=\"#map\">";

(Code ist ungetestet, kann also noch Bugs enthalten. Er sollte aber schon in die richtige Richtung gehen....:) )
 
Zuletzt bearbeitet:
Zurück
Oben