Enrico: Dynamisch Koordinaten "poly" für Image Maps erstellen

Beitrag lesen

Hallo,

ich habe mir eine eigene "Lightbox" zur vergrößerten Darstellung von kleinen Vorschaugrafiken erstellt.

Nun möchte ich das Auslösen der Lightbox aber nicht mehr über Anklicken der Vorschaubilder realisieren, d.h. inkl. auch transparenter Bereiche, was ich sehr unschön finde, sondern über verweissensitive Bereiche in Form von Image Maps "poly" umsetzen.

Bezüglich der Vorgehensweise müsste es wie folgt gehen:

  • Bild zeilenweise von oben nach unten durchlaufen (= 1. Koordinate) und daraus ein neues temporäres Bild definieren
  • Jedes temporäre Bild nun von links nach rechts durchlaufen und den ersten und letzten nicht-transparenten Pixel ermitteln (= 2. Koordinate)

Aktuell stecke ich im ersten Schritt fest:

function Bild_zerschneiden ($Bild)  
{  
   $Quelle        = imagecreatefrompng ($Bild);  
   $Quelle_Breite = imagesx ($Quelle);  
   $Quelle_Hoehe  = imagesy ($Quelle);  
  
   for ($Zeile = 0; $Zeile < $Quelle_Hoehe; $Zeile++)  
   {  
      $fn = sprintf ("img%02d.png", $Zeile);  
      $im = imagecreatetruecolor ($Quelle_Breite, 1);  
  
   // imagecopyresized ($Ziel, $Quelle, $ZielX, $ZielY, $QuelleX,       $QuelleY, $ZielW,         $ZielH, $QuelleW,       $QuelleH)  
      imagecopyresized ($im,   $Quelle, 0,      0,      $Quelle_Breite, $Zeile,   $Quelle_Breite, 1,      $Quelle_Breite, 1);  
  
      imagepng ($im, $fn);  
      imagedestroy ($im);  
   }  
}

Diese Funktion soll eine übergebene Grafik in jeweils 1px hohe temporäre zerschneiden.

Die Grafik wird korrekt übergeben, aber die temporären Grafiken werden nicht angezeigt.
Fehlermeldungen erhalte ich keine.

Wenn das Zerstückeln funktioniert, dann werde ich die jeweilige temporäre Grafik an eine weitere Funktion übergeben, die anhand transparenter Pixel die Koordinaten ermitteln wird.

Aber wie bereits beschrieben scheine ich im ersten Schritt noch irgendwo (einen) Fehler zu haben.

Woran kann es liegen, dass die temporären Grafiken nicht angezeigt werden?

Vielen Dank und Gruß,
Enrico