jsp : Thumbnails(썸네일) 처리

imagemagick 은 jai 보다 향샹된 기능과 quality를 제공 합니다.
[win] 다운로드 : http://www.imagemagick.org/script/binary-releases.php#windows
[linux] 다운로드 및 설치

http://www.imagemagick.org/script/index.php
바로 다운로드 – ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar zxvf ImageMagick.tar.gz
cd ImageMagick-6.5.9-0
./configure –prefix=/usr/local/ImageMagick –with-quantum-depth=32 –with-jpeg=yes –with-png=yes –with-tiff=yes –with-zlib=yes –with-xml=yes –without-perl
make
make install
configure 의 옵션중 –with-quantum-depth=32 는 본인의 서버 사양이 좋지 않은 이상 웬만하면 생략하자. (CPU가 1개면서 메모리 4기가 이하)

설치 확인
/usr/local/ImagicMagick/bin/Magick-config –version
/usr/local/ImagicMagick/bin/convert -list format

패스등록
PATH=$PATH:/usr/local/ImageMagick/bin/

[주의사항]
libpng나 libjpeg 가 없으면 ImageMagicK를 설치해도 사용을 할 수 없고. 아래와 같은 에러가 난다.

convert: no decode delegate for this image format

그래서 두 개를 설치 해준다.

yum install libpng.x86_64
yum install libjpeg.x86_64

혹시나 해서
libjpeg-devel.x86_64와 libjpeg-static.x86_64도 설치하긴 했으나 별 상관 없어 보임.

그 다음에 ImageMagicK 를 설치한다.
파일을 다운받고 설치!

wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
./configure –prefix=/설치할 경로
make
make install

[ 예제 : java source ]


/**
* @param loadFile - 원본 파일명
* @param saveFile - 썸네일 파일명
* @param maxWidth - 썸네일 파일 가로 크기
* @param maxHeight - 썸네일 파일 세로 크기
* @throws InterruptedException
*/
public static boolean ThumImageMagicResizeCreate(String loadFile, String saveFile, int maxWidth, int maxHeight, String autoScale) throws IOException{
String imageMagicDir = StringUtil.nvl(SystemProperties.getProperty("images.magic.contextBase"),"");
String autoSize = "";
if(!autoScale.equals("Y")) autoSize = "!";
File orgImgFile = new File(loadFile);
File thumImgFile = new File(saveFile);
ArrayList command = new ArrayList(10);
command.add(imageMagicDir+"/convert");
command.add("-resize");
command.add(maxWidth + "x" + maxHeight + autoSize);
command.add(orgImgFile.getAbsolutePath());
command.add(thumImgFile.getAbsolutePath());
//System.out.println("thumbnail command String " + command);
return exec((String[])command.toArray(new String[1]));
}
public static boolean exec(String[] command) throws IOException{
Process proc;
try{
//command 명령어 실행
proc = Runtime.getRuntime().exec(command);
}catch(IOException e){
System.out.println("IOException while trying to execute " +command);
return false;
}
int exitStatus;
while(true){
try {
exitStatus = proc.waitFor();
break;
} catch (java.lang.InterruptedException e) {
System.out.println("Interrupted: Ignoring and waiting");
}
}
if(exitStatus != 0){
System.out.println("Error executing command: " +exitStatus);
}
return (exitStatus == 0);
}

1. 파일포맷변경

convert image_org.gif image_out.jpg
[설명] image_org.gif 이미지를 image_out.jpg로 바꾼다.

convert image_org.png image_out.jpg
[설명] image_org.png 이미지를 image_out.jpg로 바꾼다.

2. 확대,축소,리사이즈

convert image_org.jpg -resize 25%x25% -quality 100 image_out.jpg
[설명] image_org.jpg 이미지를 1/4 축소한 image_out.jpg로 바꾼다.

convert image_org.jpg -resize 800×600 -quality 100 image_out.jpg
[설명] image_org.jpg 이미지를 800×600픽셀로 리사이즈 하지만 비율을 유지하며 큰사이즈 비율 기준으로 image_out.jpg를 생성한다.

convert image_org.jpg -resize 800×600! -quality 100 image_out.jpg
[설명] image_org.jpg 이미지를 800×600픽셀로 강제적으로 바꾸어 image_out.jpg를 생성한다.

[설명] “-quality 100″이란 옵션을 주면 품질을 최대한 좋게한다.

3. 회전

convert image_org.png -matte -background none -rotate 90 image_out.png
[설명] 이미지를 90도 회전하고 나머지 영역은 투명하게한다.

convert image_org.png -matte -background none -rotate -15 image_out.png
[설명] 이미지를 -15도 회전하고 나머지 영역은 투명하게한다.

4. 좌우반전,상하반전

convert -flop image_org.jpg image_out.jpg
[설명] image_org.jpg 이미지를 좌우반전시켜 image_out.jpg 이미지를 생성한다.

convert -flip image_org.jpg image_out.jpg
[설명] image_org.jpg 이미지를 상하반전시켜 image_out.jpg 이미지를 생성한다.

5. 흑백,갈색 효과

convert image_org.jpg -colorspace gray image_out.jpg
[설명] image_org.jpg 이미지를 흑백효과를 적용하고 image_out.jpg 이미지를 생성한다.

convert image_org.jpg -sepia-tone 80% image_out.jpg
[설명] image_org.jpg 이미지를 갈색효과를 적용하고 image_out.jpg 이미지를 생성한다.

6. 밝게,어둡게

convert image_org.jpg -sigmoidal-contrast 3,0% image_out.jpg
[설명] image_org.jpg 이미지를 밝게하여 image_out.jpg 이미지를 생성한다.

convert image_org.jpg -sigmoidal-contrast 3,100% image_out.jpg
[설명] image_org.jpg 이미지를 어둡게하여 image_out.jpg 이미지를 생성한다.

7. 자르기(crop)

convert image_org.jpg -crop 800×600+10+20 image_out.jpg
[설명] image_org.jpg를 Left 10픽셀 Top 20픽셀 부터 800×600픽셀까지 자르고 그 결과로 image_out.jpg 이미지를 생성한다.

convert image_org.jpg -crop 800×600+10-30 image_out.jpg
[설명] image_org.jpg를 Left 10픽셀 Top -30픽셀 부터 800×600픽셀까지 자르고 그 결과로 image_out.jpg 이미지를 생성한다.

8. 캔버스생성

convert -size 800×600 xc:white image_out.jpg
[설명] 800×600픽셀인 흰색 image_out.jpg 이미지를 생성한다.

convert -size 800×600 xc:skyblue image_out.gif
[설명] 800×600픽셀인 하늘색 image_out.jpg 이미지를 생성한다.

convert -size 800×600 xc:none image_out.png
[설명] 800×600픽셀인 투명 image_out.png 이미지를 생성한다.

9. 글자이미지생성

convert -background white -fill black -font batang.ttf -pointsize 36 label:”Testn한글” image_out.png
[설명] “Testn한글”이란 글자로 image_out.png 이미지를 생성한다. (이미지배경은 흰색, 글자색은 검정색, 폰트는 바탕, 폰트사이즈는 36pt)

10. 이미지합성

composite -dissolve 60 -geometry +50+100 image_temp.png image_org.jpg image_out.jpg
[설명] image_temp.png 이미지를 투명도 60%로 하여 image_org.jpg의 50,100 픽셀 좌표에 올려 합성후 image_out.jpg 이미지를 생성한다.

출처 : http://gmind.tistory.com/27

참조자료 :
http://blog.naver.com/seogi1004/110047542158 (별도 프로세스 사용)
http://www.imagemagick.org/Usage/thumbnails/ (이미지 편집 소프트웨어인 이미지매직 공식사이트)
http://blog.naver.com/genesung/130052565650 (이미지,문서,동영상 썸네일에대해 기술하고있는 문서)
http://gimmehide.tistory.com/38 (이미지매직 설치부터 활용까지 기술 For Java)

http://dev-world.springnote.com/pages/8962932(서버 환경에서 이미지매직사용)

Leave a Reply

Your email address will not be published.