명령줄에서 사진 세트를 회전하는 방법은 무엇입니까?

명령줄에서 사진 세트를 회전하는 방법은 무엇입니까?

동일한 해상도의 JPEG 이미지가 많이 있습니다. imagemagic이나 gimp의 그래픽 인터페이스에서 각각을 열려면 시간이 오래 걸립니다.

각 사진을 회전하고 동일한 파일 이름으로 저장하는 방법은 무엇입니까?

답변1

convert다음 명령을 사용할 수 있습니다 .

input.jpg 변환 - 회전<각도(도)>출력.jpg

시계 방향으로 90도 회전:

convert input.jpg -rotate 90 out.jpg

동일한 이름으로 파일을 저장하려면:

convert file.jpg -rotate 90 file.jpg

모든 파일을 회전하려면:

for photo in *.jpg ; do convert $photo -rotate 90 $photo ; done

또는 다음을 사용할 수 있습니다.mogrify권장되는 명령줄 도구(가장 좋은 도구)@돈-크리스티:

mogrify -rotate 90 *.jpg

답변2

JPEG 이미지 및 직사각형 회전의 경우jpegtran또는exiftran, 이미지를 손실 없이 회전할 수 있기 때문입니다.

for f in *.jpg ; do 
    jpegtran -rotate 180 "$f" > "${f%.jpg}-rotated.jpg"
done

또는 제자리에서 회전:

for f in *.jpg ; do
    jpegtran -rotate 180 -outfile "$f" "$f"
done

exiftran-aEXIF 방향 태그의 내용을 기준으로 이미지를 자동으로 회전시키는 플래그 도 있습니다 .

답변3

다른 두 답변은 EXIF ​​방향에 따라 다른 결과를 제공할 수 있습니다. convertEXIF ​​방향을 기준으로 회전한 것처럼 보이지만 jpegtranEXIF ​​방향을 무시합니다.

이 관찰을 통해 실제로 EXIF ​​방향을 폐기해야 한다는 사실을 알게 되었기 때문에 exiftool더 이상의 데이터 손실 없이 EXIF ​​데이터만 폐기하곤 했습니다(이 역시 jpegtran옵션이 지정되지 않은 경우 수행되는 작업인 것 같습니다).-rotate

exiftool -all= -o outfile.jpg infile.jpg

EXIF 방향을 직접 삭제할 수 있어요

exiftool -Orientation= -o outfile.jpg infile.jpg

아니면 수정하세요

exiftool -n -Orientation=1 -o outfile.jpg infile.jpg

(후자의 경우에는 다음을 읽어야 합니다.자주 묻는 질문-n값을 변환하는 데 필요한 옵션을 이해하고exiftool-OrientationEXIF 태그 테이블).

답변4

이것은 오래된 질문이지만 이 작업에 대한 해결책을 찾다가 발견했습니다.

문제는 jpegtran이미지를 회전하지만 EXIF ​​헤더 데이터를 모두 버린다는 것입니다.

exiftool유지는 되지만 사용하기가 그리 편리하지는 않습니다.

그래서 EXIF ​​헤더를 유지하면서 JPEG 이미지를 90° 회전시키는 작은 스크립트를 작성했습니다. 어쩌면 누군가가 이것이 유용하다고 생각할 수도 있습니다.

#!/bin/bash

orientation=$(exiftool -n -Orientation "$1")

if [[ "$?" != "0" ]]; then
    exit 1
fi

orientation=${orientation##*: }

if [[ "$orientation" == "1" ]]; then
    # 1 = Horizontal (normal)
    target="6"
elif [[ "$orientation" == "6" ]]; then
    # 6 = Rotate 90 CW
    target="3"
elif [[ "$orientation" == "3" ]]; then
    # 3 = Rotate 180
    target="8"
elif [[ "$orientation" == "8" ]]; then
    # 8 = Rotate 270 CW
    target="1"
else
    echo "Can't process orientation \"$orientation\""
    exit 1
fi

extension=${1/*./}
backup="${1%$extension*}orig.$extension"

mv "$1" "$backup" || exit 1

exiftool -n -Orientation=$target "$backup" -o "$1"

관련 정보