Am besten verwenden Sie ImageMagick (ein plattformübergreifendes Programm zum Bearbeiten von Bildern über die Befehlszeile) und einige benutzerdefinierte Skripts. Ich bin mir jedoch nicht sicher, ob dies eine "minimale Aufregung" -Lösung für Sie wäre oder nicht
Wenn Sie sich für ImageMagick interessieren, können Sie aktuelle Versionen von der Downloadseite herunterladen, obwohl Sie möglicherweise ein wenig scrollen, um etwas Passendes zu finden. Sie haben nicht erwähnt, welches Betriebssystem Sie verwenden, aber für Windows sollte der Standard- Q16-x64
Build wahrscheinlich in Ordnung sein.
ImageMagick verwenden
Sobald ImageMagick installiert ist, können Sie zum Kombinieren von Bildern das convert
Dienstprogramm verwenden.
Angenommen, wir haben eine Reihe von Bildern mit der Beschriftung " image_front.jpg", " image_back.jpg" und " image_spine.jpg" und dass sie alle die gleiche Höhe haben, können wir sie convert
mit der Option + append verwenden, um sie horizontal zusammenzufügen:
convert image_front.jpg image_spine.jpg image_back.jpg +append image_combined.jpg
In diesem Fall ist image_combined.jpg unser letztes Cover, das aus den angegebenen Bildern in Reihenfolge besteht.
Windows konvertieren
Beachten Sie, dass Windows einen integrierten convert
Befehl hat, der nichts mit ImageMagick zu tun hat. Dies kann zu Verwirrung oder anderen kleineren Problemen führen, wenn Sie Windows verwenden und nicht aufpassen.
Unabhängig davon, ob Sie die ImageMagick verwenden möchten convert
Dienstprogramm unter Windows, wie oben gezeigt, müssen Sie Ihren ImageMagick Installationsordner (registrieren ex . C:\path\to\imagemagick
) In der Windows - Path
Umgebungsvariable.
Andernfalls müssen Sie bei convert
jedem Aufruf den vollständigen Pfad angeben (z. B. C:\path\to\imagemagick\convert.exe
).
Automatisierung
Da ImageMagick über die Befehlszeile arbeitet, eignet es sich für die Automatisierung durch Skripting. Obwohl es verschiedene Wege gibt, dies zu bewerkstelligen, habe ich unten ein einfaches Beispiel mit Windows Batch gegeben.
Aus Gründen der Konsistenz werde ich ein Benennungsschema verwenden, das convert
dem vorherigen Beispiel ähnelt . Ich gehe auch davon aus, dass alle Dateien, die konvertiert werden sollen, auch im gleichen Ausgangsverzeichnis liegen.
Eine Batch-Beispiellösung
In diesem Beispiel ist der erste Schritt eine Liste der „Basis“ Dateinamen ( „Erweiterungen“ wie zu schaffen _front.jpg
, _spine.jpg
und _back.jpg
wird im Batch - Skript hinzugefügt werden).
Diese Liste kann man beliebig nennen, aber ich werde sie als files.txt bezeichnen . Unter der Annahme, die Cover - Bilder sind zum Beispiel image_01_front.jpg
, image_01_spine.jpg
, image_01_back.jpg
usw., und dass es vier Gruppen von Bildern, files.txt würde folgenden Inhalt hat:
image_01 image_02 image_03 image_04
Beachten Sie, dass diese Liste keine Duplikate enthalten sollte. Ebenso sollten keine Leerzeilen vorhanden sein. Wenn diese Voraussetzungen erfüllt sind, kann diese Liste dann als Eingabe für die folgende Batchdatei verwendet werden:
@echo off @rem Create some folders to hold our images after processing. if not exist processed mkdir processed if not exist combined mkdir combined @rem We use %%~A below to access the strings returned from our list. @rem %cd% is a special variable representing the current directory. @rem For each item in our list... for /f "usebackq delims=" %%A in ("%cd%\files.txt") do ( @rem Use ImageMagick to combine our images. @rem We are concatenating strings here (%%~A and e.g. "_front.jpg"). @rem This is the same as writing ex. "image_01_front.jpg". convert %%~A_front.jpg %%~A_spine.jpg %%~A_back.jpg +append %%~A_combined.jpg @rem Sort our images to the appropriate local folders after conversion. move %%~A_front.jpg .\processed move %%~A_spine.jpg .\processed move %%~A_back.jpg .\processed move %%~A_combined.jpg .\combined ) echo Script completed. pause
Dieses Skript kann zB als merge.bat gespeichert werden . Angenommen, diese Stapeldatei befindet sich in demselben Verzeichnis wie files.txt (zusammen mit den in dieser Datei aufgelisteten Bildern). Es sollte möglich sein, auf merge.bat zu doppelklicken und einfach alle Bilder in der Liste verarbeiten zu lassen (vorausgesetzt, es geht nichts.) schief).
Skriptnotizen
Das angegebene Skript ist offensichtlich nur ein Beispiel. Es kann einige Anpassungen für Ihre spezielle Situation / Wünsche erfordern.
Derzeit führt die Batch-Beispieldatei keine Unterverzeichnisse erneut aus.
("%cd%\files.txt")
kann ersetzt werden mit z("C:\path\to\files.txt")
.%%~A
ist äußerst erwähnenswert, da sie jeden String (der Reihe nach) in files.txt darstellt .Während genaue Dateinamen weniger wichtig sind (der
convert/+append
Befehl kann fast jeden beliebigen Namen haben), sollten sie für die Automatisierung eine konsistente Struktur haben. Wenn Sie unter Windows eine große Anzahl von Dateinamen gleichzeitig ändern müssen, ist möglicherweise das Hilfsprogramm für die Massenumbenennung von Interesse .Batch ist zwar passierbar, eine andere Sprache, die ich vorschlagen könnte, ist Python . Es ist plattformübergreifend, und obwohl mehr Code für den Umgang mit Dateien benötigt wird, kann es in vielerlei Hinsicht dem Stapel vorgezogen werden.
Dateilisten generieren
Echte Dateilisten sind wahrscheinlich etwas schwieriger zu generieren als vier grundlegende Elemente. Während Sie nicht genau das produzieren, was Sie für das obige Beispiel benötigen, können Sie unter Windows eine Liste von Dateinamen und Erweiterungen erstellen, die dir /b > files.txt
an einer Eingabeaufforderung im selben Verzeichnis wie Ihre Bilddateien geöffnet wird. In den meisten Fällen erhalten Sie damit mindestens 50% des Weges.
Ebenso können Texteditoren von Drittanbietern wie Notepad ++ (Windows) nützliche Funktionen haben. In Notepad ++ unterstützt es reguläre Ausdrücke sowie normale Textersetzung. So machen Sie zB:
image_01_back.jpg image_01_front.jpg image_01_spine.jpg image_02_back.jpg image_02_front.jpg image_02_spine.jpg image_03_back.jpg image_03_front.jpg image_03_spine.jpg image_04_back.jpg image_04_front.jpg image_04_spine.jpg merge.bat randomfile.extra files.txt
in:
image_01 image_02 image_03 image_04
Für Notepad ++ könnten Sie:
Entfernen Sie manuell die Dateien merge.bat, randomfile.extra und files.txt .
Verwenden Sie Suchen → Ersetzen ... ( Ctrl+ H), um Erweiterungen (.eg
.jpg
) über leere Ersetzungen zu entfernen, und_front
zum Beispiel eine Reihe von Basisnamen für das Batch-Skript anzugeben:image_01_back →image_01 image_01_spine image_02_back →image_02 image_02_spine image_03_back →image_03 image_03_spine image_04_back →image_04 image_04_spine
Sie können dann
Search Mode: Regular expression
zu Zeilen wechseln, die _spine enthalten :
Wählt im obigen Screenshot .+spine$
alle Zeilen mit _spine
am Ende aus. Sie können auch alle Zeilen entfernen, die _back
mit enthalten .+back$
, und etwa Folgendes wie folgt lassen:
image_01 image_02 image_03 image_04
Diese Leerzeilen könnten dann mit beseitigt werden Bearbeiten → Zeilen Operationen → Leerzeilen entfernen, unsere endgültige Liste für das Verlassen files.txt :
image_01 image_02 image_03 image_04
Dies mag für vier Zeilen ineffizient erscheinen, aber da Sie sagen, dass Sie über 900 Artikel haben, kann eine Variation dieser Schritte eine Überlegung wert sein.