Mam duży zestaw zdjęć JPEG o tej samej rozdzielczości. Otwarcie każdego z nich w interfejsie graficznym imagemagic lub gimp trwałoby zbyt długo.
Jak mogę obrócić każde zdjęcie i zapisać je pod tą samą nazwą pliku?
Mam duży zestaw zdjęć JPEG o tej samej rozdzielczości. Otwarcie każdego z nich w interfejsie graficznym imagemagic lub gimp trwałoby zbyt długo.
Jak mogę obrócić każde zdjęcie i zapisać je pod tą samą nazwą pliku?
Odpowiedzi:
Możesz użyć convert
polecenia:
convert input.jpg -rotate -degrees out.jpg
na przykład:
convert input.jpg -rotate -180 out.jpg
Zapisz go pod tą samą nazwą:
convert file.jpg -rotate -180 file.jpg
Obróć wszystkie pliki:
for photo in *.jpg ; do convert $photo -rotate 90 $photo ; done
Edytować
Możesz użyć mogrify
narzędzi wiersza polecenia (najlepsze narzędzie) zalecanych przez @ don-crissti
mogrify -rotate 90 *.jpg
$CAPITAL_NAMES
należy pozostawić zmiennym środowiskowym; do zmiennych lokalnych w skryptach powłoki lub poleceniach użyj$normal_lowercase
convert
ponownie koduje JPEG i dlatego jest stratny. Lepsze wykorzystaniejpegtran
W przypadku obrazów JPEG i obrotu pod kątem prostym użyj jpegtran
lub exiftran
, ponieważ mogą one obracać obrazy bezstratnie.
for f in *.jpg ; do
jpegtran -rotate 180 "$f" > "${f%.jpg}-rotated.jpg"
done
Lub obrócić w miejscu:
for f in *.jpg ; do
jpegtran -rotate 180 -outfile "$f" "$f"
done
exiftran
ma również -a
flagę do automatycznego obracania obrazu na podstawie tego, co mówi znacznik orientacji EXIF.
jpegtran
, użyj -rotate 270
i przy użyciu exiftran użyj -2
flagi zgodnie z instrukcją.