![]() |
Koordinaten aus PNG/SVG extrahieren
Liste der Anhänge anzeigen (Anzahl: 1)
Ich sitze derzeit daran, eine Flashanwendung nach Delphi/HTML zu portieren. Aufgabe der Anwendung ist es, eine Weltkarte anzuzeigen, in der die verschiedenen Staaten (je nach Modus) anhand bestimmter Werte eingefärbt werden. Das ist auch kein Problem, das rendern der Bilddateien bekomme ich mit Delphi hin und das Anzeigen per HTML ist trivial.
Nun sollen darüber hinaus noch zwei Dinge möglich sein: - Beim Mousover über einen Staat soll ein Hinweistext angezeigt werden. - Beim Klick auf einen Staat soll dies per Link zur entsprechenden Staatsseite führen. Dachte ich mir, das geht ja ganz einfach mit verweissensitiven Grafiken, oder auch per SVG-Imagemap, für beides bräuchte ich aber Koordinaten für die Polygone der Staaten... Mir liegen sowohl die Flächen der Staaten als auch deren Umrandung als PNG vor, letzteres sogar als SVG (alles siehe Anhang). Kennt jemand von euch eine Möglichkeit, damit irgendwie die Koordinaten für die HTML-Einbindung bestimmen zu können? Für jeden Staat alle Koordinaten per Hand zu ermitteln kommt nicht in Frage, da sitze ich nächstes Jahr noch dran... |
AW: Koordinaten aus PNG/SVG extrahieren
ich bin raus
|
AW: Koordinaten aus PNG/SVG extrahieren
Ja. Die gerenderten Bilder sollen in einer Webseite eingebunden werden. Wie erhalte ich nun aus den vorliegenden Daten die nötigen Koordinaten, um das machen zu können?
Oder gibt es gar einen völlig anderen Weg, der sich einfacher realisieren ließe? |
AW: Koordinaten aus PNG/SVG extrahieren
Die "billigste" Lösung für Delphi (vermutlich geht das auch in HTML JavaScript)
Du hast doch das Farben-PNG ... das bearbeitest du noch ein bissl. * jedes Land eine andere Farbe (da reichen auch 256 Farben) Rot=0 > nichts Rot=1 > Land 1 Rot=2 > Land 2 ... * Klick auf das sichtbare Bild * das selbe Pixel im internen Farben-Bild auslesen * Farbe = Index in der Länderliste Bei SVG, braucht man nur 'ne ordentliche SVG-Klasse, wo man auslesen kann, welches "Polygon" an der gewünschten stelle liegt und dann muß man nur noch das Polygin mit dem Land verknüpfen ... z.B. Polygone Zählen und den Index als Index für Länderliste, oder Bezeichner/Kommentare im SVG hinterlegen. |
AW: Koordinaten aus PNG/SVG extrahieren
Naja, antworte ich doch.
Ich dachte, man könnte es so wie zB OpenGL machen. Da wird die Flächen bzw Linien in einer bestimmten Farbe eingefärbt -ohne sie auf dem Bildschirm anzeigen zu lassen-. Es kann dann die Farbe unter der Maus ermittelt werden und damit das Element. Nennt sich Colorpicking. Eventuell bringt es Dich ja auf eine Idee.... |
AW: Koordinaten aus PNG/SVG extrahieren
Vielleicht habe ich mich missverständlich ausgedrückt:
Mit Delphi findet nur das Rendering der Bilder statt (in regelmäßigen Abständen). Das Anzeigen erfolgt auf einer Webseite per HTML, sodass kein Flash mehr benötigt wird. |
AW: Koordinaten aus PNG/SVG extrahieren
hmmm....ich würds so versuchen:
layer 01 (untester) -> png der Welt Layer 02 (drüba) -> png der einzelnten Staaten. Das ganze einfach über Divs mit entsprechenden css-Eigenschaften, js-handler an die Staaten-Divs..feddich. Das kniffligste daran wär die Positionierung der Einzelstaaten, analog zur Weltkarte. Aber das muss nur einmal gemacht werden. |
AW: Koordinaten aus PNG/SVG extrahieren
Zitat:
enweder/oder * die Farben aus einem "unsichtbaren" Image-Layer auslesen * die Farben aus zweiten Image auslesen * extern eine Polygon/Staaten-Liste und beim Klick darein schauen * beim SVG kann man eventuell die Staaten/Bezeichner intern zum Polygon/Gruppenobjekt speichern und beim Klick auslesen |
AW: Koordinaten aus PNG/SVG extrahieren
Zitat:
|
AW: Koordinaten aus PNG/SVG extrahieren
Zitat:
Edit: Okay, das Ganze dürfte sich mit Javascript per Canvas und Pixelvergleich lösen lassen. Vielen dank für eure Hilfe und himitsu für die Lösung! Sollte es nicht klappen, melde ich mich nochmal. :lol: |
AW: Koordinaten aus PNG/SVG extrahieren
Zitat:
* auf das Bild mit den schwarzen "Rändern" klicken (kann auch ein schön bunt gestaltetes Bild sein) * beim Klick das selbe Pixel in dem zweiten Farben-Bild auslesen Bezüglich dem Vorschlag mit den verweissensitiven Grafiken: ![]() Theoretisch könnte man die Polygone der Länder aus dem PNG extrahieren oder man versucht die Polygone aus dem Farb-Bild rauszuholen > in der DP gab es in den letzten 2 oder 3 Jahren mal ein Thema dazu, wie man in einem Bitmap/Canvas Farbgrenzen erkennt und ein Polygon daraus erstellt. (also Bitmap-zu-Vektor > eventuell ging's auch um WindowsMetaFile *.WMF) |
AW: Koordinaten aus PNG/SVG extrahieren
hmm..ja...da müsste man die einzelnen Staaten als eigene Layer implementieren....Würde wohl gehen ist aber knifflig.
Himitsu's Lösung ist da wohl einfacher. :) Kommt halt drauf an, welche Browser du unterstützen musst :) |
AW: Koordinaten aus PNG/SVG extrahieren
Vieleicht wäre das hier was für dich:
![]() Die Grafiken werden live gezeichnet, aus den Koordinaten, brauchst nicht mit irgendwelchen Einzelgrafiken rumhantieren (Bsp. auf der Seite). Sind dann als SVG im HTML und du kannst direkt auf Objekte zugreifen (Staaten in deinem Fall, aber auch Städte oder sonst was...) per JS und dann halt mit allen erdenklichen Events versehen. Gruß |
AW: Koordinaten aus PNG/SVG extrahieren
So, himitsus Vorschlag ist umgesetzt und funktioniert genau wie gewünscht! Vielen Dank dafür!
Zitat:
|
AW: Koordinaten aus PNG/SVG extrahieren
Sooo, dann möchte ich der Community aber auch nicht vorenthalten, was mit ihrer Hilfe in Delphi/FreePascal umgesetzt worden ist. :)
Hier könnt ihr euch das Ergebnis ansehen: ![]() Sogar noch bevor die Spieler es zu Gesicht bekommen haben. Die kriegen das nämlich erst zu Weihnachten. Also nicht verraten! :lol: |
AW: Koordinaten aus PNG/SVG extrahieren
Bündnisse: Japan hat die falsche Farbe.
"Bündnisse": Wurde die Krim aktualisiert? Krieg: Und ich bin mir nicht sicher, ob es stimmt, dass die USA angeblich nirgendwo kämpfende Soldaten haben. Selbst Unsere sind in einigen Kriesengebieten unterwegs und die Amis kämpfen ja bekanntlich für ihr Leben gern. (heulen nur immer rum, wenn auch mal wer zurück schießt) :roll: Ich hab das Gefühl, als wenn da die eine oder andere kleinere "unbedeutende" Insel fehlt? Kuba/Haiti/Dominikanische, Hawai, das Bermudadreieck, Phillipinen, Neuseeland, Island, ... Die einzelnen Staatennamen vielleicht nicht nur bei den Staatenklassen anzeigen? Aber sonst sieht es nett aus. |
AW: Koordinaten aus PNG/SVG extrahieren
Hey zusammen!
Da kriech ich doch auch mal verspätet aus meinem Unterschlupf :) Ich weiß, der TE hat schon eine Lösung, aber eventuell hilft das noch weiter: ![]() SVG im Browser is recht mächtig, eventuell kannst du sogar dein SVG direkt benutzen. Des Weiteren ist Javascript nicht mehr nur "die kleine Scriptsprache von nebenan", sondern hat sich zu einem echt mächtigem Monster gewandelt. Eventuell wird man da auch fündig. :) |
AW: Koordinaten aus PNG/SVG extrahieren
Zitat:
Die Karte wurde damals so erstellt, damit genau hundert Spieler darauf Platz finden. Und die Inhalte hängen alle von den Spielern ab. Bündnisse, deren Farben, Kriege etc... :-D Die Tooltips sind in der Tat noch in Bearbeitung. Da fehlen noch Beschreibungstexte und auch die Staatennamen sollen überall angezeigt werden. Aber danke für die Rückmeldung! Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz