Ich habe über 500 Bilder, die ich mit einem Wasserzeichen mit Text versehen muss, der für jedes Bild anders sein wird. Wenn ich beispielsweise ein Bild von einem Gebäude habe, möchte ich den Namen oder die Adresse dieses Gebäudes mit einem Wasserzeichen versehen.
Ich habe die eindeutigen Informationen in einer Excel-Datei mit dem Bilddateinamen gespeichert.
Jetzt, nachdem ich in den letzten drei Tagen gesucht habe, bin ich nicht auf ein Tool gestoßen, das eindeutigen Text für jedes Bild mit einem Wasserzeichen versehen kann.
Ich arbeite hauptsächlich unter Windows und kann diesen Vorgang bequem über die Befehlszeile ausführen. Ich bin auch bereit, etwas Geld für ein Tool auszugeben, um dies zu tun, damit es nicht kostenlos und/oder Open Source sein muss.
Sie können dies mit dem Befehl zum Konvertieren von ImageMagick aus einer Stapeldatei tun, mit dem Sie Text auf eine Datei anwenden, den Typ konvertieren, neu skalieren usw., alles in einem einzigen Vorgang - es ist auch kostenlos.
z.Bconvert rose.jpg -draw "text 25,60 'By Any Other Name'" outdir/rose.jpg
Alternativ können Sie python , PIL (die Python-Bildbibliothek) oder Pillow (eine Verzweigung von PIL) und xlrd verwenden , um den gesamten Job automatisch zu erledigen, einschließlich des Lesens aus den Excel-Dateien. Dies sind ebenfalls kostenlose Tools, erfordern jedoch etwas mehr Einarbeitung von Ihrer Seite. Ich würde dringend empfehlen, eine Sicherungskopie aller Ihrer Bilder zu erstellen, bevor Sie irgendwelche Operationen an ihnen versuchen.
Nur um hinzuzufügen - einige der Kommentare zur ursprünglichen Frage zu sehen , dass alle Tools, die ich in der obigen Antwort erwähne, sind:
Vielleicht zu spät, aber ich bin vor 2 Wochen über diese Frage gestolpert und habe durch Programmieren eine Lösung gefunden:
Ich habe es geschafft, ein ähnliches Problem mit bulkWaterMark und .NET zu lösen, wo Sie dynamischen Text über eine Funktion namens Ausdrücke mit einem Wasserzeichen versehen können. Ich habe die Freeware-Version des Tools verwendet und ein kontextspezifisches Plug-in für benutzerdefinierte Ausdrücke codiert, das Daten aus einer XML-Datei lädt, in der Bildinformationen gespeichert sind. Dann habe ich einen Ausdruck geschrieben, der den Dateinamen des aktuellen Bildes als Parameter nimmt und ihn in der XML-Datei nachschlägt – alles in C#.
Das Problem war, dass keine SDK-Dokumentation verfügbar ist und ich bin mir auch nicht sicher, ob diese Plug-in-Schnittstelle offiziell öffentlich ist, aber Sie müssen nur 2 oder 3 Klassen erben und einige Methoden überschreiben, um Ihren eigenen Code in die Anwendung einzufügen. Es funktionierte damals wie ein Zauber.
Sie müssen nur auf die Assembly PMlabs.GrfX.Framework verweisen und Ihre eigene Implementierung dieser drei Klassen erstellen:
- ExpressionsPlugIn<TExpressionContext>
- ExpressionContext
- Expression<TExpressionContext>
Die Expression-Klasse ist die Funktion, die aufgerufen wird, wenn ein Bild gerendert wird. Der Kontext enthält mehrere Ausdrücke und die Plug-in-Klasse enthält den Kontext. Stellen Sie nur sicher, dass Sie alles in der abstrakten Ausdrucksklasse implementieren, die anderen sind nur Installationscode.
Nachdem Sie Ihre Plug-in-Assembly kompiliert haben, legen Sie sie in den Ordner bin/plugins Ihrer bulkWaterMark-Installation.
Noch eine Bearbeitung: Ich habe heute einen vereinfachten Code meiner Lösung auf Github veröffentlicht: https://github.com/barnacleboy/bulkWaterMarkExpressionPlugin
Nick Dickinson-Wilde
njackson.gis
mattdm
njackson.gis
Nick Dickinson-Wilde
njackson.gis