Verbinden Sie mehrere PNG-Bilder

Oft muss ich viele PNG-Bilder nehmen und sie zu einem größeren Bild zusammenfügen.

In diesem speziellen Fall möchte ich 2 PNGs mit ungefähr gleicher Breite (± 2 Pixel) und unterschiedlichen Höhen nehmen und ein neues PNG erstellen, bei dem das erste über dem anderen liegt. Z.B

Geben Sie hier die Bildbeschreibung ein

Die Verbindung sollte nahtlos sein.

Gibt es ein Befehlszeilentool / eine App, die dies tut? Am besten wäre es, wenn Preview eine Lösung anbietet.

sipsist das nächste, was ich kenne, aber ich glaube nicht, dass dies das tut, was Sie wollen. Ist etwas falsch daran, ein Bildbearbeitungsprogramm wie GIMP zu verwenden?
@ JMY1000 Ich hoffe, es gibt eine native Methode oder ein einfaches Einzeiler-Terminalskript. Die Verwendung von GIMP für diese einfache Aufgabe dauert ewig (Starten von GIMP, Erstellen eines neuen Bildes mit den richtigen Abmessungen, Einfügen der beiden PNGs). War.
Fair genug. Mir ist aus dem Kopf nichts bewusst.
In Ihrem OP sagten Sie: "Am besten wäre es, wenn Preview eine Lösung anbietet." Preview hat diese Funktionalität nicht und tut es auch nicht, sipswie in den Kommentaren erwähnt. In Ihrem Kommentar sagten Sie: "Ich hoffe, es gibt eine native Methode oder ein einfaches Einzeiler-Terminalskript". Mir ist keine native Methode bekannt, aber das bedeutet nicht, dass es keine gibt. Die Drittanbieter-App ImageMagic verfügt über einen montageBefehl zum Erstellen eines zusammengesetzten Bildes durch Kombinieren mehrerer separater Bilder. Möglicherweise müssen Sie die Bilder zuerst mit einem anderen Befehl von ImageMagic oder drehen sips. Kann ich nicht genau sagen, da ich es nicht benutzt habe.
@ user3439894 Ich habe ImageMagick bereits installiert, ich werde mir den Montagebefehl ansehen. :)

Antworten (2)

ImageMagick kann das:

convert 1.png 2.png -append result.png

Ausrichtungsoptionen können (optional) mit dem -gravitySchalter angegeben werden,

  • -gravity EastRichten Sie die rechten Kanten aus
  • -gravity WestRichten Sie die linken Kanten aus
  • -gravity centerdie Zentren ausrichten

Hinweis: Wenn Sie +appendanstelle von verwenden -append, werden die Bilder horizontal (nebeneinander) zusammengefügt und nicht übereinander.

+1, dass Sie zurückgekommen sind, um mitzuteilen, dass ImageMagick dies tun könnte und wie Sie es getan haben. :)
Gibt es hier irgendwie eine Art Interaktion vom Typ GUI zu verlinken? Meistens möchte ich Screenshots mit langen Namen konvertieren, die auf der Befehlszeile schwer zu unterscheiden sind. Es wäre schön, wenn ich die Bilder auswählen könnte, die ich über den Finder kombinieren möchte, und dann der Rest dieses Skripts ausgeführt wird.
@Rey geben Sie convertdie Dateien ein und ziehen Sie sie per Drag & Drop vom Finder in das Terminal
@Rey – Ich habe eine Antwort hinzugefügt, um Ihre Frage zu beantworten: apple.stackexchange.com/a/395488/136164

Wenn Sie dies vollständig im Finder tun möchten, können Sie einen Automator-Dienst erstellen und ihn über das Rechtsklickmenü als Dienst ausführen.

  1. Öffnen Sie Automator.app
  2. Neu > Dienst
  3. Dienst erhält ausgewählte „Bilddateien“ in „Finder.app“
  4. Fügen Sie Dienstprogramme > Shell-Skript ausführen hinzu
  5. Geben Sie das unten gezeigte Skript ein (einschließlich des abschließenden Zeilenumbruchs)
  6. Speichern als "Image Append - Vertical" (speichert unter ~/Library/Services/Image Append - Vertical.workflow)

Zum Ausführen – wählen Sie zwei oder mehr Bilder im Finder aus, klicken Sie mit der rechten Maustaste auf > Dienste > Bild anhängen – vertikal

Es wird eine neue Datei mit dem Namen des ersten Bildes mit dem Suffix „v“ vor der Dateierweiterung erstellt.

Bash-Skript:

#!/bin/sh
DIR=$(dirname -- "$1")
FILE=$(basename -- "$1")
NAME="${FILE%.*}"
EXT="${FILE##*.}"
# call ImageMagick with selected files and create new file with "v" suffix
convert "$@" -append "${DIR}/${NAME}v.${EXT}"
# GraphicsMagick version (smaller & faster than ImageMagick)
#/opt/local/bin/gm convert "$@" -append "${DIR}/${NAME}v.${EXT}"

Automator-Screenshot (macOS High Sierra):

Automator.app-Screenshot