이미지 매직 (ImageMagick)
이미지 매직(ImageMagick)은 그림 변환, 수정 등의 많은 기능을 갖고 있는 무료 소프트웨어이다. 명령어를 입력하는 방식으로 사용된다.
이미지의 외곽을 자르거나, 색을 바꾸는 것을 비롯한 다양한 효과를 줄 수 있으며, 이미지의 회전, 합치기, 문자삽입, 선, 다각형, 타원, 베지에 곡선을 그려넣거나, 이미지 늘이기 등의 작업을 할 수 있다.
dd
- convert : 기존 화일의 종류를 바꾸거나 편집하여 새로운 그림 화일을 만들 때
- mogrify : convert와 달리 기존 화일을 수정할 때 (새로운 그림 화일을 만들지 않음.)
- composite : 여러 그림 화일을 겹쳐서 새로운 그림을 만들 때
- montage : 여러 그림을 이어 붙여서 새로운 그림을 만들 때
- import : 화면을 캡쳐할 때
- identify : 그림 화일에 대한 정보를 알고 싶을 때
- display : 그림을 화면으로 보이게 할 때
- animate : 그림을 이어서 에니메이션처럼 보고 싶을 때
libGD와 비교
php에 기본으로 포함되어 있는 그래픽 라이브러리인 libGD와 자주 비교된다.
장점
- 이미지 포맷과 상관없이 좋은 화질의 결과를 출력할 수 있다.( gif 화일에서도 깔끔한 워터마크를 넣을 수 있다.)
- Exif 데이터가 소실되지 않는다.
- 메모리는 적게 사용하고, CPU를 더 많이 사용한다. ( GD는 전체 이미지를 메모리에 올려 사용하는 방식이기 때문에 할당된 메모리보다 큰 이미지는 프로세싱하지 못하지만 이미지매직은 한줄씩 프로세싱하기 때문에 메모리 사용이 적다.)
단점
- 따로 설치해야 한다.
- shell_exe가 허용되지 않은 시스템에서는 사용이 불가하다.
- GD에 비해 한줄씩 프로세싱하는 관계로 속도가 떨어진다.
속도
GD는 더 빠르다. 하지만 EXIF정보를 가져갈 수 없기 때문에 EXIF정보가 필요하면 별차이 없다
이미지 리사이징 테스트를 해보았다. 240KB짜리 621x700 사이즈를 200x200으로 리사이징만 하는거다
1개 | 100개 | |
---|---|---|
imagemagick | 0.34741306304932 | 17.569828033447 |
GD | 0.053716897964478 | 2.6152718067169 |
GD가 확실히 빠르다. 하지만 리사이징 퀄리티가 imagemagick보다 떨어진다는게 중론이다. 근데 속도 차이가 너무 난다.
설치
확인
root@vaslor:~$ /usr/bin/convert -version -bash: /usr/bin/convert: 그런 파일이나 디렉터리가 없습니다
우분투에서는 한번에 설치가 된다.
sudo apt-get install imagemagick
확인
root@vaslor:~$ /usr/bin/convert -version Version: ImageMagick 6.6.9-7 2012-08-17 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC Features: OpenMP
예
파일포맷변경
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로 바꾼다.
확대,축소,리사이즈
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 800x600 -quality 100 image_out.jpg [설명] image_org.jpg 이미지를 800x600픽셀로 리사이즈 하지만 비율을 유지하며 큰사이즈 비율 기준으로 image_out.jpg를 생성한다.
convert image_org.jpg -resize 800x600\! -quality 100 image_out.jpg [설명] image_org.jpg 이미지를 800x600픽셀로 강제적으로 바꾸어 image_out.jpg를 생성한다.
[설명] "-quality 100"이란 옵션을 주면 품질을 최대한 좋게한다.
회전
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도 회전하고 나머지 영역은 투명하게한다.
좌우반전,상하반전
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 이미지를 생성한다.
흑백,갈색 효과
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 이미지를 생성한다.
밝게,어둡게
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 이미지를 생성한다.
자르기(crop)
convert image_org.jpg -crop 800x600+10+20 image_out.jpg [설명] image_org.jpg를 Left 10픽셀 Top 20픽셀 부터 800x600픽셀까지 자르고 그 결과로 image_out.jpg 이미지를 생성한다.
convert image_org.jpg -crop 800x600+10-30 image_out.jpg [설명] image_org.jpg를 Left 10픽셀 Top -30픽셀 부터 800x600픽셀까지 자르고 그 결과로 image_out.jpg 이미지를 생성한다.
캔버스생성
convert -size 800x600 xc:white image_out.jpg [설명] 800x600픽셀인 흰색 image_out.jpg 이미지를 생성한다.
convert -size 800x600 xc:skyblue image_out.gif [설명] 800x600픽셀인 하늘색 image_out.jpg 이미지를 생성한다.
convert -size 800x600 xc:none image_out.png [설명] 800x600픽셀인 투명 image_out.png 이미지를 생성한다.
글자이미지생성
convert -background white -fill black -font batang.ttf -pointsize 36 label:"Test\n한글" image_out.png [설명] "Test\n한글"이란 글자로 image_out.png 이미지를 생성한다. (이미지배경은 흰색, 글자색은 검정색, 폰트는 바탕, 폰트사이즈는 36pt)
이미지합성
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://www.imagemagick.org/Usage/를 참고하십시오.
누구나 수정하실 수 있습니다. 위키 사용법 참고하세요. |
---|