Bildprojekt mit Mehrfachauswahl, Export in separate Dateien

Für ein Hobby-Gamedev-Projekt suche ich nach einer Möglichkeit, den folgenden Workflow zu automatisieren, der in jedem Foto- / Bildbearbeitungstool enthalten sein kann.

  1. Laden Sie ein hochauflösendes Bild
  2. Mehrfachauswahl treffen
  3. Geben Sie jeder Auswahl einen Namen
  4. exportiere jede Auswahl in eine separate PNG-Datei (mit dem Namen)
  5. Koordinaten der Auswahlen in Textdatei exportieren (Name = x,y,h,w)
  6. Speichern Sie das Bild mit Auswahlen für die spätere Verwendung oder den erneuten Export

Kurz gesagt, nehmen Sie ein hochauflösendes Bild, treffen Sie mehrere Auswahlen und exportieren Sie dann jede Auswahl in eine separate PNG-Datei, während Sie gleichzeitig eine Liste der Auswahlkoordinaten in eine Textdatei exportieren. Sehen Sie, was ich im Mock-up-Bild unten meine:

Speichern Sie mehrere Auswahlen, um Bilder und eine Koordinatendatei zu trennen

Ich mache jetzt alle diese Schritte von Hand und die meisten Bilder haben 70-80 Teile. Bei Fehlern, Bildaktualisierungen, Auflösungsänderungen usw. muss ich große Teile oder sogar das Ganze wiederholen, obwohl die Auswahl ungefähr gleich ist.

Einige Bildbearbeitungsprogramme unterstützen Plug-Ins und Scripting, und ich kann Scripting (Lua, Python, Javascript) problemlos ausführen. Aber ich kenne keinen Fotoeditor, der das Speichern mehrerer Auswahlen unterstützt . Wenn Sie eine gute Lösung dafür in einem Bildbearbeitungsprogramm wie Painshop, PhotoShop, Coral Draw oder einem OpenSource-Programm wie Gimp oder Paint Dot Net usw. kennen, lassen Sie es mich bitte wissen.

Ist dieses Hobby von dir auf github? weil ich das sehr faszinierend finde. Ich würde gerne eine emulierte Version der russischen Nock-Off-Spiele von Game N Watch spielen
Sie würden dies wahrscheinlich interessant finden en.wikipedia.org/wiki/…
@LateralTerminal Ich habe deinen Kommentar erst jetzt gesehen, ja, es gibt eine Github-Seite, sie ist hier github.com/BdR76/lcdgame.js und siehe den Ordner \utils\

Antworten (4)

Aber ich kenne keinen Fotoeditor, der das Speichern mehrerer Auswahlen unterstützt.

Eine Lösung für Gimp:

  • Führen Sie im Skript das Äquivalent von Select>To path(mithilfe der pdb.plug_in_sel2path(image, drawable)Funktion) aus. Dadurch wird ein Pfad erstellt, der aus mehreren "Strichen" besteht, wobei jeder Strich eine geschlossene Kurve ist, die eines Ihrer ausgewählten Elemente darstellt(*).
  • Sie können dann die Striche im Pfad durchlaufen und für jeden Strich:
    • Erstellen Sie daraus einen neuen Pfad
    • Treffen Sie eine Auswahl aus diesem Pfad
    • Erstellen Sie eine neue Ebene, die nur diese Auswahl enthält
    • Speichern Sie diese Ebene in einer Datei
    • Kopieren Sie den Versatz dieser Ebene in Ihre Datendatei (beachten Sie, dass Sie auch den Schwerpunkt des Objekts berechnen können, da die Koordinaten der Strichpunkte leicht verfügbar sind).

Einige Beispiele für Gimp-Skripte in Python, einschließlich einer ganzen Reihe, die sich hauptsächlich mit Pfaden befassen, finden Sie hier und hier .

(*) Einige Gimp-Pfade-Grundlagen :

Nur um das klarzustellen, ich kann jede Form auswählen, verwenden selection to path, um eine ganze Liste davon zu erstellen und sie in einen nützlichen Namen pathsumzubenennen . pathAber könnte dann ein custom.py-Skript verwendet werden, um alle diese Pfade zu durchlaufen, jeden Pfad wieder in Auswahlen umzuwandeln und als PNG-Datei zu speichern? Ist das der Ansatz, den Sie meinen?
Art von. Mein Vorschlag ist, alle Ihre Elemente auf einmal auszuwählen, indem Sie sie beispielsweise mit dem Quickmask-Modus übermalen . Aber Ihr Ansatz ist auch gültig, wenn auch etwas klickintensiver. Aus Sicht des Skripts iteriert es entweder mehrere Pfade mit einem einzigen Strich (Ihre Methode) oder es iteriert die Striche in einem einzigen Pfad (meine Methode). Nicht viel Unterschied. In beiden Fällen wären es weniger als 100 Python-Zeilen.
Okay, danke, aber das Problem mit einem einzelnen Pfad ist, dass Sie den Teilen keine sinnvollen Namen geben können (trampolin_1, baby_16, fire_3 usw.). Übrigens habe ich gerade ein Skript gefunden, das fast genau das zu tun scheint, wonach ich suche; Teilen Sie ein Bild mit den Pfaden unter register.gimp.org/node/27913 , also werde ich mir das auch genau ansehen
Nun, wenn Sie einen Namen angeben müssen, ist die Verwendung eines Pfads für jeden sinnvoll und wird Sie nicht viel verlangsamen. Ja, Araknes Skript kann wahrscheinlich helfen (oder ist ein guter Anfang für Ihr eigenes).
FYI Ich habe die Python-Tipps in diesem Projekt verwendet :) github.com/BdR76/lcdgame.js/tree/master/utils

Eine (teilweise / noch nicht funktionierende) Lösung für GIMP, die die disjunkten Teile ("Striche") einer Auswahl verwendet:

  1. Legen Sie das GIMP-Skript von Andrew Kvalheim in eine Datei ~/.gimp-2.8/scripts/export-selected-regions.scm(oder den entsprechenden Ort unter Windows / Mac OS X).

  2. Starten Sie GIMP.

  3. Erstellen Sie Ihre Auswahl.

  4. Wählen Sie „Auswählen → Ausgewählte Regionen exportieren“ aus dem Menü. (Dies ist der neue Menüeintrag, der vom Skript hinzugefügt wurde.)

Vorbehalte:

  • Ab GIMP 2.8 funktionierte dieses Skript nicht und beschwerte sich über "unbekanntes Bildformat". Es wird also ein Update benötigen, aber dann eine Lösung bereitstellen. Bitte berichte in den Kommentaren, wenn es funktioniert.

  • Verglichen mit einer auf Pfaden basierenden Lösung (in den anderen Antworten hier) erfordert diese Lösung weniger Klickarbeit, um die Auswahlen zu definieren, ist aber nur anwendbar, wenn (1) Sie keine selbstdefinierten Namen für Ihre Ausgabebilder benötigen und (2) Keines Ihrer Auswahlstücke überlappt sich (da dies beim Definieren der Auswahl zu einem zusammengeführten "Strich" und folglich zu einem Ausgabebild für diesen "Strich" führen würde).

Danke für die Antwort. Allerdings sind sowohl die selbstdefinierten Namen für jedes Ausgabebild sehr wichtig, als auch viele der Auswahlmöglichkeiten überlappen. In der Zwischenzeit hatte ich bereits eine praktikable Lösung, siehe das Skript export_paths_to_png.py hier github.com/BdR76/lcdgame.js/tree/master/utils

Eine (teilweise / noch nicht funktionierende) Lösung für GIMP, die einen schnellen halbautomatischen Prozess von "Auswahl treffen, als PNG speichern, wiederholen" verwendet:

  1. Speichern Sie das Skript "Save Area " in einer Datei ~/.gimp-2.8/scripts/savearea.scm(oder an einem entsprechenden Ort unter Windows / Mac OS X).

  2. Starten Sie GIMP.

  3. Gehen Sie zu „Bearbeiten → Tastaturkürzel“ und weisen Sie dem Menüpunkt „Datei → Bereich speichern“ ein Tastaturkürzel zu (das durch das von Ihnen installierte Skript hinzugefügt wurde). Sie können beispielsweise eine einzelne Taste ohne Modifikator verwenden /.

  4. So verwenden Sie das Skript:

    1. Eine Auswahl treffen.
    2. Drücken Sie die zugewiesene Verknüpfung, um auf die Funktion „Datei → Bereich speichern“ zuzugreifen, und speichern Sie die Auswahl in einer Datei.
    3. Wiederholen Sie dies für alle Auswahlen, die Sie speichern möchten.

Vorbehalte: Das Skript wurde zuletzt 2007 aktualisiert, wird also wahrscheinlich nicht in einem aktuellen GIMP 2.8 funktionieren (ich habe es jedoch nicht getestet). Aber es ist eine Teillösung, die behoben werden könnte. Auch die Installationsanweisungen erwähnen, dass man die Quellbilder in ein anderes Format konvertieren sollte, wenn das Skript nicht funktioniert. PNG mit "Bild → Modus → RGB" scheint eine gute Wahl zu sein, da das Skript dieses Format selbst verwendet, um die Auswahl zu speichern.

Die Arbeitslösung, die ich habe, ist wie folgt. Wählen Sie jede der Formen aus und speichern Sie die Auswahl als Pfad und benennen Sie die Pfade etwa wie „mario_1“, „mario_2“, „mario_3“, „kiste_1“ usw. Sie können dann alle Formen mithilfe des export_paths_to_png.pyPython-Skripts in separate PNG-Dateien exportieren für GIMP. Der Vorteil davon ist, dass die Auswahl + Namen in einer Datei gespeichert werden, was gut für die Archivierung ist, damit Sie später einige Änderungen vornehmen und dann einfach erneut exportieren können. Ein weiterer Vorteil ist, dass bei einer Größenänderung des gesamten Bildes auch die Pfade geändert werden.
Richtig, deine ist mit Sicherheit die Beste. Ich habe jetzt auch eine Antwort darauf hinzugefügt. Betrachten Sie die anderen Antworten hier nur "der Vollständigkeit halber" - jemand könnte eines Tages stattdessen eine davon brauchen :) Cheers!

Eine (voll funktionsfähige) Lösung, wie sie vom ursprünglichen Poster @BdR entwickelt und in diesem Kommentar erwähnt wurde . Es ist die bisher fortschrittlichste Lösung für GIMP und funktioniert vollständig im aktuellen GIMP 2.8.

  1. Legen Sie das Skript export_paths_to_png.py in den Ordner ~/.gimp-2.8/plug-ins/(oder den entsprechenden Ort unter Windows / Mac OS X).

  2. Machen Sie dieses Skript unter Linux ausführbar:

    chmod a+x ~/.gimp-2.8/plug-ins/export_paths_to_png.py
    
  3. Verwenden Sie unter Linux die generierten Dateien /stattdessen \als Verzeichnistrennzeichen im Skript (Zeile 29 und 68 ).

  4. Starten Sie GIMP.

  5. Erstellen und benennen Sie GIMP-Pfade für jede Auswahl:

    1. Erstellen Sie die Auswahl.

    2. Klicken Sie im Dialog "Pfade" auf "Auswahl zu Pfad".

    3. Optional: Benennen Sie Ihren Pfad um. Der Pfadname wird beim Speichern als Dateiname verwendet.

    4. Wiederholen Sie dies für alle Ihre Auswahlen.

  6. Klicken Sie auf "Filter → Pfade → Pfade nach PNG exportieren" (der Menüpunkt, der durch das von Ihnen installierte Skript hinzugefügt wurde), füllen Sie den Dialog aus und klicken Sie auf "OK".

Vorteile:

  • Funktioniert vollständig mit dem aktuellen GIMP 2.8 (ich habe es getestet).
  • Sie können alle Pfade zusammen mit Ihrem Bild speichern, indem Sie Ihr Bild im nativen GIMP-Format speichern .xcf. Dies spart Arbeit, wenn Sie später einige Änderungen vornehmen und die Bilder erneut exportieren müssen.
  • Wenn Sie die Größe des Bildes ändern, werden die Pfade proportional angepasst, sodass sie immer noch "passen".
  • Pfade können sich problemlos überlappen, sodass ein Pixel bei Bedarf als Teil mehrerer Ausgabebilder exportiert werden kann.
  • Die Namen, Ursprungskoordinaten und Größen aller Pfade werden auch als Textdatei orgcoords.jsonin Ihrem Ausgabeverzeichnis gespeichert, um sie mit Ihren eigenen Skripten zu verwenden. Wenn Ihre Pfade einfache Auswahlen mit dem GIMP "Rectangle Select Tool" sind, sind auf diese Weise alle Informationen darüber in der .jsonDatei enthalten.