• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

PNG-Bilder zusammenfügen

Pyrdracon

Member
Mir fällt es etwas schwer, hier die richtigen Begriffe zu finden. Daher versuche ich mal, die Sachlage zu erklären:

Ich mache aus einem Spiel heraus Screenshots einer Ingame-Karte. Dies ist nicht ganz so einfach, da die Karte recht groß ist und ich die Überlappungen beibehalten muss. Jetzt habe ich nach einem Programm gesucht, mit dem ich die einzelnen Kartenelemente zu einer Gesamtkarte zusammenfügen kann. Zuerst bin ich bei Hugin gelandet, wo ich ziemlich gut einzelne Punkte der Karte als Stützpunkte verwenden kann. Leider macht Hugin nicht das, was ich möchte, denn die Karte selber wird immer irgendwie anders projeziert, als ich es gerne hätte. Ich benötige eigentlich eine ebene Fläche, auf der die Teile einfach neben- und untereinander zusammengefügt werden können. Vielleicht ist mir das bei Hugin nur nicht aufgefallen, wo ich das umstellen könnte.

Als nächstes habe ich angefangen, die einzelnen Kartenteile als Ebenen in Gimp einzufügen und per Transparenzanpassung jeweils so übereinander zu schieben, dass man keine Übergänge sieht. Das ist aber ziemlich aufwendig und ich habe noch keine 10% der Karte fertig und dafür schon über 3 Stunden benötigt.

Gibt es ein Programm, mit dem genau das möglich ist, also das Zusammenfügen von Karten ohne eine Projektion auf eine Kugel, einen Zylinder oder sonst etwas sondern einfach nur auf eine flache Ebene, bei der die Bilder nicht mehr verzerrt werden?
 
OP
P

Pyrdracon

Member
ImageMagick kenne ich und nutze es auch. Aber ich glaube, in dem Fall wird es mir nicht weiterhelfen.

Ich habe mal eine stark vereinfachte Grafik gebastelt, anhand derer ich nochmal versuche zu erklären, was ich meine:
kartenteile.png


Angefangen mit Bild 1 füge ich als nächstes Bild 2 hinzu. Diese beiden überlappen sich zu einem Teil, damit ich sie zusammenbauen kann. Leider bietet mir die Ingame-Karte keine Möglichkeit, Ausschnittweise vorzugehen, ich muss daher überlappende Bereiche auswählen und diese wie oben gezeigt zusammenfügen. Danach käme Bild 3 an die Reihe. Bild 4 könnte demnach bei Bild 1 und Bild 2 überlappen, Bild 5 sogar bei Bild 1, 2, 3 und 4. Das klappt soweit ganz gut, ich habe bisher keine Fehler beim Zusammenschieben der Ebenen gehabt, aber es ist eben sehr sehr viel Arbeit.

Hugin ist ein Programm, welches man für Panoramafotos verwenden kann. Damit werden Bilder nebeneinder (sogar untereinander) miteinander verbunden und man erhält am Ende ein großes Panoramabild bestehend aus vielen Einzelbildern. Das kann ich (bisher) leider bei mir nicht verwenden, da ich keine Verzerrungen in die große Karte bekommen möchte. Hugin aber kann die Bilder aber nur auf verschiedene Projektionen auflegen, wovon keine eine einfache Ebene ist. Die Bilder werden also immer verzerrt.

Daher die Frage, ob es ein Programm gibt, mit dem ich genau diese Arbeit, die ich jetzt habe (quasi ein großes Panoramabild) automatisiert oder mir zumindest Arbeit abnimmt. Mit ImageMagick kann ich hier wohl nicht arbeiten, da das Programm die Überschneidungen bisher nicht kennt oder ich sie teilweise von Hand angeben müsste.
 

harley

Hacker
Das ruft nach hugin. Wenn Du etwas mit den Einstellungen spielst, dürftest Du damit auch Dein Problem lösen können.

Michael :-D

Nachtrag: Zu früh geschrieben - bzw. zu spät richtig gelesen. Du solltest aber trotzdem mal mit hugin experimentieren, da Du hier die Verzerrungen auch sehr gut beeinflussen kannst. Ansonsten sehe ich nur gimp und Handarbeit in Frage kommen.
 

RME

Advanced Hacker
Hallo,

Danke für die Grafik... ich verstehe jetzt was Du tun möchtest :D

Ich mache aus einem Spiel heraus Screenshots
Da ich nicht weiss welches Spiel, ist folgendes nur ein Schuss ins Blaue:

Angenommen das Spiel ist auf Deinem Computer, dann könntest Du mal alle Dateien durchsuchen. Irgendwo müsste doch die Karte als ganzes gespeichert sein (vielleicht codiert oder gepackt).

Wenn offline: was kriegst Du wenn Du (falls möglich) ein 'wget -r <url>' machst und alles herunterlädst?

Wie gesagt, wird wohl nichts Wert sein, aber ich wollte den Gedanken mitteilen.

Gruss,
Roland
 
OP
P

Pyrdracon

Member
Also, das Spiel heißt Regnum Online. Es ist ein Online-RPG, wobei es einen eigenen Client benötigt. Es gibt einige gepackte Dateien, die wohl die Spielelemente beinhalten, allerdings kenne ich mich mit dem Format (noch) nicht aus. Es ist möglich, dass die Karte auch dort irgendwo drin liegt.

Daher war es bisher definitiv einfacher für mich, die Karte per Screenshots als Einzeilteile zu speichern und dann zusammenzufügen. Ziel ist es, die Karte später erneut in Häppchen bestimmter Größe zu packen und per GoogleMaps auf unserer Page anzubieten. Bisher gibt es eine Karte, aber es ist eben eine ältere und dazu noch deutlich detailärmer.

Per hugin habe ich es jetzt ebenfalls noch einmal ausprobiert, aber auch, wenn ich es für wenige Kartenteile hinbekommen habe, so ist eine Bearbeitung der kompletten Karte so doch noch einmal eine Ecke schwerer als per Gimp. Eine Anleitung dazu habe ich gefunden, die zumindest für wenige Kartenelemente ganz gut funktioniert: http://hugin.sourceforge.net/tutorials/scans/en.shtml. Bei mehreren allerdings wird die Bearbeitung deutlich komplizierter und bei einem kleinen Fehler (oder einer Unachtsamkeit) ist wieder irgendwo ein Stück Karte falsch gesetzt. Vermutlich werde ich also den harten Weg gehen.
 

Forsti

Newbie
In dem Fall kann dir eigentlich nur GIMP helfen, doch ich weiß nicht, ob die Grafiken damit in das richtige Format für dein Vorhaben gebracht werden können. Brauchst du nich 8-Bit-Grafiken? Meine gehört zu haben, dass das nur in Photoshop möglich ist. Kann mich aber auch irren.
 
OP
P

Pyrdracon

Member
PNG-Karten reichen aus, ein hoher Detailgrad ist dabei insbesondere bei hohen Zoomstufen gewollt. Für niedrigere Zoomstufen werde ich eventuell noch eine nicht ganz so detaillierte Karte erstellen. Allerdings ruht das Projekt gerade wegen hoher sonstiger Arbeitsbelastung.

Ich habe allerdings angefangen, die einzelnen Screenshots der Karte per GIMP erneut zusammenzufügen. Leider bin ich in zwei Tagen nicht über 10% der Karte hinausgekommen. Durch einige Änderungen an der Ingame-Karte selber hätte ich schon ein paar Gebiete erneut bearbeiten müssen. Geplant ist, ab Oktober, wenn es bei mir wieder ruhiger wird, das Projekt wieder aufzunehmen.

Danke auch für die Rückmeldung.
 

homer65

Hacker
Wie groß wird denn die Karte, wenn sie zusammengefügt ist?
Was soll mit den überlappenden Bereichen passieren?
Sollen dort einfach nur die Pixel eines Bildes sein, oder soll irgentwie gemischt werden?
Ich frage, weil ich ein kleines Bildprogramm geschrieben habe.
Das kann bis jetzt auch noch keine Bilder zusammenfügen.
Vielleicht hätte ich aber Lust es dahingehend zu erweitern.
Ist halt die Frage wie aufwändig es wäre und wie komfortabel es sein soll.
 
OP
P

Pyrdracon

Member
Am liebsten wäre es mir natürlich, wenn ich die Ingame-Karte selber irgendwie extrahieren könnte, denn das würde wahrscheinlich den ganzen Prozess deutlich einfacher machen. Ich möchte allerdings nicht, dass dieser Weg illegal wird, von daher mache ich Screenshots.

Die Karte ist in der höchsten Zoomstufe so gut, dass man einzelne Dinge auf der Karte sehr gut erkennen kann. Bäume, Sträucher, was auch immer zu finden ist. Leider komme ich bei der Zusammenstellung der einzelnen Screenshots der Karte auf etwa 18-19 Bilder pro Zeile, die Karte selber ist quadratisch, bedeutet, dass bei einer Auflösung von 1280x1024 in der Höhe noch mehr Zeilen als Spalten zu erstellen sind, vermutlich 24-25.

Im Moment versuche ich, durch Veränderung des Durchscheinens der Bilder diese an markanten Stellen genau überlappen zu lassen. Das funktioniert ziemlich gut, ist aber sehr aufwendig. Insbesondere müssen die Screenshots genau genug werden, was aber oft ein wenig an der freihändigen Auswahl auf der Karte nicht ganz genau möglich ist. Am Ende möchte ich ebenfalls eine möglichst quadratische Karte erhalten. Für die Erstellung der einzelnen Kartenteile für die GoogleMaps-Karte habe ich mir schon ein Script geschrieben, welches die Karte in handliche 256x256-Pixel-Teile zerlegt. Ich muss später nur im GoogleMaps-Script die maximale Größe der Karte einer Zoomstufe angeben. Vorher wird, weil es zumindest in Version 2 noch nicht möglich war, die Karte an entsprechenden Stellen mit den Landschaftsnamen versehen. Um diesen Teil mache ich mir eigentlich keine Sorgen.

Die derzeit größte Karte, die ich erstellt habe, allerdings ist sie nur in Teilen auch ausgefüllt, hat eine Breite und Höhe von 16384x16384 Pixel. Eine Stufe darunter, voll ausgefüllt, bin ich bei 8192x8192 Pixeln. Für die neue Karte erwarte ich in der höchsten Zoomstufe voll ausgefüllt über 18000 Pixel pro Seite. Und ja, mir ist sehr wohl bewusst, wie groß das erstmal als xcf bzw. als png-Bild später wird. Die einzelnen Kartenteile später sind dann in der Größe von 256x256 Pixeln deutlich kleiner.

Meine Versuche mit hugin sind übrigens nicht glücklich verlaufen, da sich insbesondere auf den Wasserflächen zu viele Wiederholungen ergaben, die bei den Überlappungen ständig eine Nachbearbeitung erforderlich machten. Außerdem kam, trotz all meiner Bemühungen, keine vernünftige Karte zustande, da hugin die zusammengefügte Karte immer auf ein 3D-Objekt projezieren wollte, was eher wie eine Hohlkugel oder ein Zylinder aussah, aber leider keine glatte Fläche vorsah.
 

homer65

Hacker
Dann ist die Karte zum groß um sie mit meinem Programm anzeigen zu können.
Was ginge wäre Sie per Kommandozeile zusammenzubasteln, also ohne GUI.
Um das mal zu veranschaulichen.
Man würde zunächst ein neues Bild erzeugen - ich nenne das mal gBild - das sagen wir mal 16384 x 16384 Pixel groß wäre.
skript new gBild 16384 16384
Dann würde man die Bilder - ich nenne sie mal Bild1 bis Bild4 - einzeln hinzufügen
skript add gBild Bild1 px1 py1
skript add gBild Bild2 px2 py2
skript add gBild Bild3 px3 py3
skript add gBild Bild4 px4 py4
Dabei wäre (pxn,pyn) - n=1,2,3,4 - die Koordinate an der das Bild eingefügt würde.
Ich hoffe ich habe mich verständlich ausgedrückt.
Wäre das für dich eine Möglichkeit deine Karte zu erstellen?
 

homer65

Hacker
Habe es doch anders gemacht. Es sind jetzt auch größere Bilder per GUI bearbeitbar, sofern denn genügend RAM zur Verfügung steht.
Bei einer quadratischen Karte mit 16384 Pixel Breite, müsten mindestens 4 Giga Byte RAM nur für das Programm zur Verfügung stehen.
Nebenbei: Welches Betriebssystem benutzt du? Wieviel RAM hatt dein Rechner?
Hast du überhaupt Lust die neue Programmversion zu testen?
Falls ja, solltest du dich per EMail an mich wenden: christian[at]edv-ehm.de
 
Oben