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ć convertpolecenia:
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ć mogrifynarzędzi wiersza polecenia (najlepsze narzędzie) zalecanych przez @ don-crissti
mogrify -rotate 90 *.jpg
$CAPITAL_NAMESnależy pozostawić zmiennym środowiskowym; do zmiennych lokalnych w skryptach powłoki lub poleceniach użyj$normal_lowercase
convertponownie koduje JPEG i dlatego jest stratny. Lepsze wykorzystaniejpegtran
W przypadku obrazów JPEG i obrotu pod kątem prostym użyj jpegtranlub 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
exiftranma również -aflagę do automatycznego obracania obrazu na podstawie tego, co mówi znacznik orientacji EXIF.
jpegtran, użyj -rotate 270i przy użyciu exiftran użyj -2flagi zgodnie z instrukcją.