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

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

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

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 배치 파일 생성

#+BEGINSRC bash // Global 환경 패스가 지정되어 있는 곳에 쉘파일 생성 cd ~/bin #+ENDSRC bash

#+BEGINSRC bash // 스크립트 파일 만들기 touch resizer.sh #+BEGINSRC bash

#+BEGINSRC bash // 권한주기 chmod +x resizer.sh #+ENDSRC bash

#+BEGINSRC bash // 아래의 스크립트를 resizer.sh 에 넣어주자. #+ENDSRC bash

#+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.

#+BEGINSRC bash convert myfigure.png -resize 200x100 myfigure.jpg #+ENDSRC bash

방법 2.

#+BEGINSRC bash convert -resize 50% myfigure.png myfigure.jpg #+ENDSRC bash

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

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