터미널에서 이미지 회전


34

이미지가 많은 디렉토리가 있지만 방향이 잘못되었습니다. 이미지를 올바른 방향 (대개 ± 90 o ) 으로 회전하고 싶습니다 . 이미지 (shotwell 사진) 뷰어를 사용하여 회전 버튼을 클릭하여 개별적으로 회전 할 수 있지만 너무 지루합니다.

나는 보았다 man shotwell하고 shotwell --help-all있지만, 명령 줄에서 회전 명령을 호출하는 방법을 설명합니다 아무것도 없다.

터미널에서 shotwell (또는 다른 뷰어)의 회전 명령을 호출 할 수있는 방법이 있습니까? 또는 이미지를 회전시키는 다른 방법도 환영합니다.


1
노틸러스에서 원하는 경우 askubuntu.com/a/432662/15811 . 그러나 원하는 터미널 명령은 "imagemagick"에서 "convert"입니다.
Rinzwind

1
무손실 회전을 원하고 파일이 jpeg 인 경우 jpegtran을 살펴 보십시오 . imagemagick은 (솔직히 작은) 손실 회전을 수행 합니다.
Rmano

답변:


39

순수한 bash 구현을 찾고 있다면 ImageMagick의 convert명령이 당신이 찾고있는 것입니다.

for szFile in /path/*.png
do 
    convert "$szFile" -rotate 90 /tmp/"$(basename "$szFile")" ; 
done

위의 방법으로 기존 파일을 그대로두고 새로 회전 한 파일을 /tmp복사하여 다른 곳으로 이동하거나 복사하거나 변환 후 및 검증 후에 기존 파일을 교체 할 수 있습니다 .

(그리고 표준 소프트웨어 인 Ubuntu의 모든 최신 릴리스에서 작동합니다)


28
for file in *.JPG; do convert $file -rotate 90 rotated-$file; done

이는 저작권법과 것이다 회전 -and을-이름을 바꿀 파일을.

원본 파일을 그대로 유지하려면이 방법이 효과적 일 수 있습니다 ...

파일 이름이 * .jpg이면 소문자 (또는 * .png ...)로 바꿉니다.


4

전체를 덮어 mogrify쓰려면 ImageMagick 제품군에서이를 달성하는 가장 쉬운 방법 인 것 같습니다.

# counterclockwise:
mogrify -rotate -90 *.jpg

# clockwise:
mogrify -rotate 90 *.jpg

주의 사항 : 이것은 JPEG 파일에 대한 무손실 회전 방법이 아닙니다 ( https://www.imagemagick.org/discourse-server/viewtopic.php?t=5899) . jpegtran이것을 달성합니다 (평가되지 않음).

# counterclockwise
ls *.jpg | xargs -n 1 jpegtran -perfect -rotate 270

# clockwise
ls *.jpg | xargs -n 1 jpegtran -perfect -rotate 90

완벽하게 작동
Paul Jones

Mogrify는 간단하고 빠른 배치 이미지 편집과 관련하여 스위스 칼입니다.
EA304GT

가장 좋은 대답은 왜 제자리에서 이것을 원하지 않습니까?
mLstudent33

1
@ mLstudent33 : 좋은 질문입니다. 그가 나타납니다 mogrifyJPEG 파일을하지 무손실, 그러나 jpegtran입니다.
krlmlr

3

내가하는 방법은 다음과 같습니다.

  1. gThumb 설치

    sudo apt-get install gthumb
  2. 노틸러스를 열고 이미지 디렉토리로 이동하십시오. 하나를 마우스 오른쪽 버튼으로 클릭하고을 선택하십시오 Open with -> gthumb.

  3. 언더 view메뉴를 선택 Browser하거나 눌러 Esc키를 누릅니다. 모든 이미지가 표시된 디렉토리 브라우저가 열립니다.

    여기에 이미지 설명을 입력하십시오

  4. 를 눌러 Ctrl회전하려는 이미지를 선택하거나 Ctrl+ 를 통해 모든 이미지를 선택하십시오 A.

  5. 도구 모음에서 선택한 Tools다음과 Rotate Right또는 Rotate Left환경 설정에 따라.

    여기에 이미지 설명을 입력하십시오


0

좋은 해결책은 (예를 들어 앞에 둔 백업 세트를 만드는 것입니다 backup-,) 새 파일 세트 (앞에 둔 예를 생산하는 원본 파일을 회전 rotated-당신의 세트를 제공)

  • img-1.png
  • backup-img-1.png
  • rotated-img-1.png
  • img-2.png
  • ...등등

mv/의 cp도구는 접두사를 추가 할 수 있습니다, 그것의 지저분한 멀리 데리고 [bash는 대체 (globbing) (이 매개 변수 확장을 사용하는 것, ewww ...)

rename도구를 사용하면 도구 s/before/after/에서 대체 구문 을 사용 sed하여 해당 보호 접두어를 바꾸고 원본 파일을 덮어 쓸 수 있으므로 주어진 그림 세트 img-{1..n} 의 전체 프로세스 .png는 다음과 같습니다.

for imgf in img-*.png; do mv "$imgf" "backup-$imgf"; done
for imgf in backup-img-*.png; do convert "$imgf" -rotate 90 "rotated-$imgf"; done

노트 :

  • cp대신에 사용할 수는 mv있지만 원본의 사본이 2 개 있습니다 (하위 접두사 "" "가 연결되어 있다는 단점이 있습니다 rotated-backup-).
  • 시계 방향으로 회전 (시계 -rotate 270반대 방향으로 90 ° 회전 )
  • 진행 상황을 추적하고 통화 echo "Rotating ${imgf#backup-} ... ";후 추가 convert( done)
  • 보다 간단한 형태 (예 : 번호가 매겨진 파일 세트)의 경우 echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";대신에 일부 매개 변수 확장을 사용하십시오.

    (동일한 bash 매개 변수 확장에서 접두사와 접미사를 제거 할 수 없으므로 사용하십시오 cut)

그런 다음 확인 후 엉망이되지 않은 사진을 원래 위치로 다시 이동하여 삭제하십시오.

rename 's/^rotated-//;' rotated-*
rm backup-img-*

0

이 코드를 복사 / 붙여 넣기하여 다른 이름으로 저장할 수 있습니다 rotate.sh

#!/bin/bash -e

CUR_DIR=$(pwd)
cd $1
for file in *.jpg
do
    convert $file -rotate 90 $file
done
cd $CUR_DIR

이 파일을 저장 한 후를 사용하여 터미널에서 실행하십시오 ./rotate.sh folder_containing_images.


코드와 링크를 확인하십시오!
George Udosen 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.