이미지 업로드 서비스를 만든다고 가정하였을 경우,
초기에 처리하지 못했던 섬네일 작업을 일괄적으로 처리할려고 한다.

섬네일이란 사진의 축소판이며, 사진을 탐색할때 빠르게 알아 볼 수 있다는 장점이 있다.

그럼 아래의 방법으로 일괄 섬네일 처리 방법을 소개하겠다.

1 이미지를 압축하는 두가지 방법

1.1 Imagemagick 툴을 활용하는 방법

원문 : Batch Resize Images using Command Line and Imagemagick

imagemagick 툴의 장점은?
- 특정 조건을 주어 해당 이미지로 처리 가능
예로, 모든 이미지를 500x300 이미지 기준으로 압축을 해줘.가 될수 있겠다.

1.1.1 환경 셋팅

위 원문은 리눅스 기반으로 되어 있지만,
Mac OS X(Unix) 기반을 사용하기 때문에 따로 환경설정을 해주지 않아도 된다.

필요한 툴만 설치하도록 하겠다.

1.1.1.2 설치하기
brew install imagemagick

이로써 모든 환경 설정이 완료되었다.

1.1.1.3 배치 파일 생성

Global 환경 패스가 지정되어 있는 곳에 쉘파일 생성

cd ~/bin

스크립트 파일 만들기

touch resizer.sh 

권한주기

chmod +x resizer.sh

아래의 스크립트를 resizer.sh 에 넣어주자.

#+BEGINSRC bash #!/usr/bin/env bash

FOLDER="/var/www/wp-bullet.com/wp-content/uploads"

WIDTH=540

HEIGHT=300

#resize png or jpg to either height or width, keeps proportions using imagemagick #find ${FOLDER} -iname '.jpg' -o -iname '.png' -exec convert \{} -verbose -resize $WIDTHx$HEIGHT\> \{} \;

#resize png to either height or width, keeps proportions using imagemagick #find ${FOLDER} -iname '*.png' -exec convert \{} -verbose -resize $WIDTHx$HEIGHT\> \{} \;

#resize jpg only to either height or width, keeps proportions using imagemagick find ${FOLDER} -iname '*.jpg' -exec convert \{} -verbose -resize $WIDTHx$HEIGHT\> \{} \;

#mogrify -path ${FOLDER} -resize \({WIDTH}x\){HEIGHT}% *.png -verbose #+ENDSRC bash

1.1.1.4 실행하기
  1. 현 폴더 사이즈 확인하기
    $ du -sh foldername
    
  2. 배치 실행하기
    $ ~/bin/resizer.sh
    
  3. 줄어든 용량 확인하기
    $ du -sh foldername
    

1.2 convert 툴을 활용하는 방법

stackoverflow

convert의 장점은?
- 간단하게 커맨드라인으로 사용이 가능하다.

1.2.1 하나의 파일을 압축 할때

방법 1.

convert myfigure.png -resize 200x100 myfigure.jpg

방법 2.

convert -resize 50% myfigure.png myfigure.jpg

1.2.2 여러개의 파일을 한번에 압축 할때

find . -maxdepth 1 -iname "*.jpg" | xargs -L1 -I{} convert -resize 30% "{}" _resized/"{}"