exif 데이터를 기반으로 이미지를 자동으로 회전하는 방법


31

카메라 (Olympus E-520)로 사진을 만들면 EXIF ​​데이터에 방향이 저장됩니다.

Ubuntu의 표준 이미지 뷰어가이 이미지를 올바르게 표시합니다. 그러나 Windows 뷰어는 그렇지 않습니다.

우분투의 배치 에서이 이미지를 실제로 회전시키는 방법이 있습니까 (EXIF에 따라 필요한 경우)? 예를 들어 ImageMagick 도구를 사용하십니까?

답변:


37

exiftran그리고 JHead ( jhead -autorot) 가 이것을 할 수 있습니다. exiftran에 대해 확실하지 않은 손실없이이 작업을 수행 할 수 있습니다 jhead.


1
이처럼 exiftran 외모 정확히 내가 필요!
Peter Smit

3
jhead -autorot은 jpegtran을 호출하여 완벽하게 무손실 회전을 수행 할 수 있습니다. IJG의 무손실에 대해 잊어 버렸습니다. jpegclub.org/losslessapps.html Exiftran은 무손실 회전을 수행 할 수 있으며 이미지 파일의 exif 정보를 존중하므로 jpegtran보다 낫습니다. 그러나 때로는 (그리고 모든 세부 사항을 잘 모르겠습니다) 손실없이 회전 할 수 없다는 점에 유의해야합니다. 따라서 필요한 회전을 식별하기 위해 jhead를 사용하여 스크립트를 구현하는 경우 (이전과 유사하지만 모든 회전을 처리하기위한 case 문을 사용하여) 손실 회전으로 돌아가는 것을 지원해야합니다.
opello

1
exiftran -a (exif 방향 태그를 기반으로 한 자동 회전)로 몇 가지 테스트를 수행했으며 잘 작동하는 것 같습니다. 무손실 회전과 관련하여 수행 된 회전의 역수를 수행하여 소스 이미지를 다시 가져올 수 없습니다. 예 : exiftool -F 1.jpg -o 2.jpg; exiftool -F 2.jpg -o 3.jpg; 1.jpg와 3.jpg의 md5sum은 동일하지 않습니다. 면밀한 검사 (Araxis merge binary 비교)는 때로는 exif 헤더 정보가 다르고 다른 경우에는 파일의 주요 변경 사항이었습니다. 그러나 Araxis merge의 이미지 비교는 변경되지 않은 픽셀을 보여주지 않았습니다.
opello

나는 픽셀이 바뀌지 않았다는 것을 의미했다. 또한-stackoverflow / superuser 프로토콜에 대해서는 잘 모르겠지만 dmityugov는 적절한 도구를 추천하기 위해 이것을 가져야한다고 생각합니다.
opello

1
exiftran이 파일에서 일부 메타 데이터를 제거 할 수 있음을 발견했습니다. 예를 들어 Samsung Galaxy S2로 촬영 한 이미지에는 타임 스탬프 필드 (EXIF가 아닌 것)가 있으며 exiftran이이를 제거합니다. exiftran -a는 회전이 필요없는 이미지를 변경합니다. jhead -autorot에는 두 가지 문제가 없습니다. OTOH, 파일 mtime을 보존하는 옵션이 없습니다 (그러나 해결 방법으로 -ft 스위치가 있습니다).
pfalcon

12

ImageMagick의 변환 도구에는 작업을 완료해야하는 -auto-orient 플래그가 있습니다.

#!/bin/bash

JHEAD=jhead
SED=sed
CONVERT=convert

for f in *.jpg
do
        orientation=$($JHEAD -v $f | $SED -nr 's:.*Orientation = ([0-9]+).*:\1:p')

        if [ -z $orientation ]
        then
                orientation=0
        fi

        if [ $orientation -gt 1 ]
        then
                echo Rotating $f...
                mv $f $f.bak
                $CONVERT -auto-orient $f.bak $f
        fi
done

현재 디렉토리에서 * .jpg를 반복하는 빠른 스크립트를 함께 던졌습니다. 경로 ($ 1) 또는 필요한 항목을 갖도록이를 쉽게 수정할 수 있습니다.


1
큰! 내가 찾지 못한 것. 나는 이미지를 일괄 처리하기 위해 mogrify와 함께 사용합니다. 한 가지 질문 만, 왜 이미지를 변경하지 않아도 모든 이미지를 다시 작성합니까? (해시가 다름)
Peter Smit

왜 그런지 잘 모르겠지만 이미지 diff와 이진 diff를 모두 보면서 전체를 다시 인코딩하는 것 같습니다.
opello September

와, 대단해. 매우 감사합니다. 다른 훌륭한 답변이 추가되지 않으면 반드시이 답변을 수락합니다.
Peter Smit

2

XnView 를 사용 하여 그렇게 할 수 있습니다 . XnView를 사용하여 배치 모드에서 자동 회전을 수행하는 방법에 대한 정보는 다음 페이지를 확인하십시오.

Windows에서는 IrfanView 를 사용하여이를 수행 할 수 있습니다 . IrfanView 웹 사이트 FAQ 섹션에서 :

Q : 일괄 처리 모드에서 JPG 무손실 작업 (회전, IPTC, 주석)을 사용하는 방법은 무엇입니까?

A : 썸네일 창을 시작하고 JPG로 폴더를 열고 많은 JPG를 선택하고 썸네일 메뉴 JPG 무손실 작업용 파일-> 선택한 썸으로 무손실 변환 파일을 참조하십시오. 참고 : 자동 회전 옵션은 EXIF ​​방향 태그가 올바르게 저장된 경우에만 작동합니다 (왼쪽 위 아님).


1

ImageMagick을 사용하면 mogrify를 사용하여 파일을 회전하고 회전 된 이미지를 원래 파일 이름으로 다시 쓸 수 있습니다.

mogrify -auto-orient *.jpg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.