이미지 매직 (ImageMagick)

이미지 매직(ImageMagick)은 그림 변환, 수정 등의 많은 기능을 갖고 있는 무료 소프트웨어이다. 명령어를 입력하는 방식으로 사용된다.

www.imagemagick.org

이미지의 외곽을 자르거나, 색을 바꾸는 것을 비롯한 다양한 효과를 줄 수 있으며, 이미지의 회전, 합치기, 문자삽입, 선, 다각형, 타원, 베지에 곡선을 그려넣거나, 이미지 늘이기 등의 작업을 할 수 있다.

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개
imagemagick0.3474130630493217.569828033447
GD0.0537168979644782.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/를 참고하십시오.

누구나 수정하실 수 있습니다. 위키 사용법 참고하세요.

역링크