#!/bin/sh
#이미지 파일 화질&크기 변환 스크립트
#———————————–
#
# designed by aamadeus
#
# 2002-02-11
# Pls contact to aamadeus@familyoum.com, if you need…
#
#이미지 파일의 화질 및 크기를 변환해 주는 스크립트입니다.
#와우리눅스 7.1 paran에서 테스트 하였으며 현재까지 문제는 없습니다.
#그렇지만 제가 워낙 초보인 관계로 자신할 수는 없습니다.
#그러나 큰 문제는 없으리라 생각합니다.
#
#저는 디지탈카메라를 간혹 사용하는데, 이미지 파일을 한꺼번에 변경하고자
#이 스크립트를 만들었습니다.
#그 외 이미지 파일을 한꺼번에 바꾸고자 하시는 사람들의 많은 활용 바랍니다.
#
#기본적인 개념은 폴더 단위로 통째로 이미지파일의 화질, 크기, 이름을 변경하는
#것입니다. 이 용도에만 한정하여 만들었으므로 다른 용도로 사용하실 분들은
#소스를 적절히 변경하여 사용하시고, convert 명령어의 메뉴얼 페이지를 참고하기
#바랍니다.
#
#이 스크립트는 기본적으로 ImagemagicK 패키지의 convert 프로그램이 있어야 동작
#합니다. 대부분의 리눅스 배포판에는 이 패키지가 포함되어 있으니 혹시 작동을 잘
#하지 않는 분들은 우선 ImagemagicK 패키지를 설치해 보기 바랍니다.
#
#리눅스가 언젠가는 데스크탑 컴퓨터의 표준이 되기를 바라며..
#기본 환경설정
default_ext=”jpg” #기본 파일 확장자.
quality=”90″ #화질 : 1~100, 100이 최상의 화질
size=”640×480″ #크기 : 가로크기x세로크기 형식으로 입력
#적절한 인수가 입력되었는지 체크. 적절한 인수가 입력되지 않았다면
#사용법을 보여준다.
if [ ! -n “$1” ] || [ `expr index “$1” /` -ne “0” ] #첫번째 인수 체크
then
echo “”
echo “사용법: `basename $0` subject [file_path]”
echo “”
echo “인수는 다음과 같습니다.”
echo “———————————————-“
echo “subject : 필수. 변환할 파일의 주제를 말합니다. 최종적으로 변환되는 파일”
echo ” 형식은”
echo “”
echo ” subject_no”
echo “”
echo ” 의 형식이므로 디렉토리상에 이미지 파일의 주제별로 정렬됩니다.”
echo ” 예를 들어 여행에 관한 이미지 파일을 변환할 경우 subject에 여행”
echo ” 이라고 입력하고 스크립트를 실행하게 되면 다음과 같은 형식으로”
echo ” 이미지 파일이 변환됩니다.”
echo “”
echo ” 여행_001.jpg”
echo ” 여행_002.jpg”
echo ” 여행_003.jpg”
echo ” …”
echo “file_path : 선택. 스크립트가 실행될 경로명을 입력합니다. 만약 입력하지”
echo ” 않으면 현재 디렉토리로 설정됩니다.”
echo “”
exit 1
fi
if [ -n “$2” ] #두번째 인수 체크
then
directory=$2 #디렉토리 이름이 인자로 주어질 경우…
strlen=”${#directory}” #디렉토리에 /이 써져있을 경우 제거한다.
lastchar=”${directory:strlen-1:1}”
if [ “$lastchar” = “/” ]
then
directory=”${directory:0:strlen-1}.”
fi
else
directory=$PWD #아니면 현재 디렉토리에 대해서.
fi
Rpt=0 #몇번째 이미지인지 체크하기 위한 변수
file_success=0 #변환 성공한 파일이 몇개인지 체크
for i in “$directory/”*.”$default_ext” #전체 디렉토리의 파일에 대한 변환 시작
do
let “Rpt=$Rpt+1” #카운터 증가
if ((“$Rpt” < “10”)) #파일에 번호를 붙이기 위함
then
file_name=”00″
elif ((“$Rpt” < “100”))
then
file_name=”0″
else
file_name=””
fi
file_name=”$directory/$1″_”$file_name$Rpt.$default_ext” #생성할 파일이름
echo “변환중.. $i -> $file_name”
convert -compress JPEG -interlace PLANE -quality “$quality” -size “$size” “$i” “$file_name” #변환과정
if [ “$?” -ne “0” ] #변환 결과를 체크
then
echo “변환 실패! : $file_name”
else
#echo ” 변환 성공! : $file_name”
let “file_success=$file_success+1”
fi
done
echo “총 $Rpt개의 파일중 $file_success개 변환 성공!” #결과 메세지 출력