Wie ändere ich mehrere Bilder im Terminal?


8

Ich muss mehrere .pngBilder über die Befehlszeile von Schwarz nach Weiß invertieren .

Ich habe festgestellt, dass ich möglicherweise das Gimp-Plugin "Plug-in-Vinvert" verwende, aber ich kann nicht herausfinden, wie ich es verwenden soll. Ich habe so etwas versucht

gimp -b '(plug-in-vinvert "INT32" "filename.png" "/resultsFolder/")'

und viele andere Kombinationen, aber ohne Erfolg.

Antworten:


19

Warum Gimpe? Versuchen Sie das imagemagickPaket. Es ist ein großartiger Befehlszeilen-Bildprozessor. In Ihrem Fall können Sie es wie folgt verwenden:

convert -negate src.png dst.png

So ändern Sie mehrere Dateien gleichzeitig, z

img_path=./path/to/imgs
img_results=./path/to/imgs/results
mkdir -p $img_results
for img in ${img_path}/*;
    do 
    convert -negate $img ${img_results}/${img#./*};
done

Die genaue Methode hängt möglicherweise davon ab, wie Sie Ihre Pfade beziehen.

Hier ist ein aktuelles Beispiel ...

$ for img in ./png-64/*; do echo convert -negate $img results/${img#./*}; done
convert -negate ./png-64/arrow-block.png results/png-64/arrow-block.png
convert -negate ./png-64/arrow-block-rotated.png results/png-64/arrow-block-rotated.png
convert -negate ./png-64/arrow-shrink.png results/png-64/arrow-shrink.png

Es funktioniert, außer dass nur eine Datei konvertiert wird.
Juraj.Lorinc

1
Schleife for i in `ls *.jpg`; do convert ${i%.*}.png ${i%.*}-inverted.png; done
hinzufügen

Ich habe Ihren Code ausprobiert, aber er funktioniert bei mir nicht. Ich denke, ich mache einen dummen Fehler, weil ich mit Linux ziemlich neu bin. Ich füge Ihren Code direkt in das Terminal ein und wenn ich die Eingabetaste drücke, erhalte ich nur ">".
Juraj.Lorinc

1
Ich habe nicht gearbeitet, weil ich es ohne das "erledigt" kopiert habe. Sie haben dort einen kleinen Fehler, aber der Arbeitscode ist, dass for i in `ls *.png`; do convert -negate ${i%.*}.png results/${i%.*}.png; done ich gerade -negateden Code hinzugefügt und geändert habe, um die invertierten Bilder in den Ordner "Ergebnisse" zu legen.
Juraj.Lorinc

1
Vielen Dank. In diesem Fall ist der endgültige Codefor i in `ls *.png`; do convert -negate $i results/$i; done
Juraj.Lorinc

4

Um einen Stapel von Bildern zu konvertieren , verwenden Sie am schnellsten und kürzesten den folgenden ImageMagick- Befehl:

mogrify -negate *.jpg

NB Ändern Sie das Bildformat entsprechend und stellen Sie sicher, dass Sie eine Kopie der Originalbilder haben.


Danke, perfekt! Für mich war es so, magick mogrify -negate *.pngals wäre mogrifyes kein direkt aufrufbarer (Archlinux)
Bonanza

1

Probieren Sie dieses GIMP-Plugin aus, um eine Routine für mehrere Bilder gleichzeitig auszuführen: "Batch Image Manipulation Plugin" http://registry.gimp.org/node/26259

Laden Sie das Paket herunter und extrahieren Sie es, öffnen Sie ein Terminal im resultierenden Ordner und führen Sie Folgendes aus:

make && make install

Starten Sie dann Gimp und gehen Sie zu File - Batch Image Manipulation , um das Plugin zu starten. Dort können Sie mehrere Bilder hinzufügen.

Geben Sie hier die Bildbeschreibung ein

Wenn in der Frage nach dem Invertieren von Farben gefragt wird, fügen Sie den entsprechenden Manipulationssatz hinzu: Hinzufügen - Andere GIMP-Prozedur , suchen Sie nach "Invertieren" und Sie finden "Gimp-Invertieren".

Geben Sie hier die Bildbeschreibung ein

OK, und vor 'Übernehmen' können Sie den Standardordner für die Ausgabe festlegen ~/.

Ich hoffe, das hilft. Viel Spaß beim GIMPEN!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.