Konvertieren (komprimieren) von JPEG-Bildern mit mogrify, wobei die Originaldateien im gleichen Verzeichnis bleiben

672
vladimir pavloski

Ich versuche, eine Reihe von JPEG-Bildern mit dem Imagemagick-Befehl mogrify zu konvertieren (komprimieren), wobei die Originaldatei im gleichen Verzeichnis bleibt. Ich tippe im Terminalfenster ein: mogrify -Qualität 25% * .JPEG con% 002d.JPEG dann erhalte ich den Fehler: mogrify: Image 'con% 002d.JPEG' kann nicht geöffnet werden: Keine solche Datei oder Verzeichnis @ Fehler /blob.c/OpenBlob/2712. Wie kann ich diesen Fehler beheben? Ich habe ausgeführt: Identifizieren Sie -verbose * | grep Format und das Ergebnis gilt für alle Dateien: Format: JPEG (JFIF-Format der Joint Photographic Experts Group) Exif: Miniaturansicht: JPEGInterchangeFormat: 10718 Exif: Miniaturansicht: JPEGInterchangeFormatLength: 8223

Mein System ist Xubuntu 16.04. Ich danke Vladi für Hilfe.

0
`mogrify` hat keine Ausgabedatei-Option: Es ersetzt immer die Originaldateien und` con% 002d.JPEG` wird nach der `* .JPEG`-Liste als weitere Eingabedatei (die nicht existiert) behandelt . AFH vor 5 Jahren 1
Nach welcher Art von Ausgabename suchen Sie? Laufende Nummerierung? chew socks vor 5 Jahren 0
@chewsocks Ich habe gelesen, wo (ich weiß nicht mehr wo), dass ich eine JPEG-Datei mit einem Ausgabedateinamen komprimieren könnte, der die Originaldatei nicht ersetzt. Der Ausgabename kann eine fortlaufende Nummer oder etwas wie con-001.JPEG, con-002.JPEG, con-003.JPEG, ... sein. vladimir pavloski vor 5 Jahren 0
Möglicherweise haben Sie an "ffmpeg" gedacht, das die Benennung sequentieller Ausgaben unterstützt. chew socks vor 5 Jahren 0
@chewsocks Nein, ich irre mich nicht, es ist auf Imagemagick Mogrify-Befehl. vladimir pavloski vor 5 Jahren 0

2 Antworten auf die Frage

1
chew socks

Die Man-Seite mogrify benötigt keine Ausgabeoption, sondern überschreibt einfach die Eingabedatei, wenn das Format nicht geändert wird (derselbe Name wird bis zur Dateierweiterung verwendet).

Versuchen Sie dies convertstattdessen.

#!/bin/bash n=1 for i in *.JPEG; do  convert "$i" -format jpg -quality '25%' $(printf con-%03d.JPEG $n) n=$((n+1)) done 

JPEG vs jpg

Ich habe zweimal dasselbe Bild gemacht

$ mogrify -format JPEG b.jpg $ mogrify -format jpg b.jpg 

Dann

$ diff -u <(identify -verbose b.jpg ) <(identify -verbose b.JPEG) --- /dev/fd/63 2018-09-29 14:42:27.506462707 -0400 +++ /dev/fd/62 2018-09-29 14:42:27.510462929 -0400 @@ -1 +1 @@ -Image: b.jpg +Image: b.JPEG @@ -71,2 +71,2 @@ - date:create: 2018-09-29T14:37:11-04:00 - date:modify: 2018-09-29T14:37:11-04:00 + date:create: 2018-09-29T14:37:03-04:00 + date:modify: 2018-09-29T14:37:03-04:00 @@ -77 +77 @@ - filename: b.jpg + filename: b.JPEG 
OK!! Das ist erledigt. Vielen Dank. Kann ich fragen, was der Unterschied zwischen JPEG-Format und JPG-Format ist? Das obige Skript wird in "jpg" konvertiert. Die neue Datei wird als ".JPEG" gespeichert. Was ist der Hack? Vielen Dank vladimir pavloski vor 5 Jahren 0
@vladimirpavloski Gute Frage ... Gewohnheit = P. Ich vermeide Großbuchstaben in meinen Namen, daher denke ich immer an das Format als "jpg". `convert` erzwingt keine Dateierweiterungen (Sie können JPEG als .txt speichern) und da ich spezifisch war, habe ich gesehen, dass Ihnen" JPEG "gefallen hat. chew socks vor 5 Jahren 0
Dies klärt meine Fragen. Vielen Dank. vladimir pavloski vor 5 Jahren 0
0
Janghou

Benutzen -write

mogrify -set filename:name '%t_q%Q' -quality 30 -write '%[filename:name].jpg' *.jpg 

Mit dem obigen Befehl wird das konvertierte Bild in einen neuen Namen geschrieben: Konvertieren von name.jpg in name_q30.jpg, name1.jpg in name1_q30.jpg . Halten Sie Ihre alten Dateien sicher.

Informationen zu anderen Prozentsatz-Escape- Metadaten finden Sie in den Dokumenten