ImageMagick 는 비트맵 이미지를 컨트롤 하는 라이브러리입니다. 이미지 업로드를 할때 썸네일생성등으로 많이 쓰이죠.
Rails3.0에서 Paperclip을 사용중인데 ImageMagick를 사용할때 다음 에러가 났습니다. 사연이 있어서 windows에서 Rails를 돌리고 있는데, 서버를 이관하게 되어서 소스를 옮겼더니 잘되던게, 이미지파일 첨부를 할때 다음과 같은 에러가 나는 군요.
<Paperclip::NotIdentifiedByImageMagickError: C:/DOCUME~1/행정용/LOCALS~1/Temp/stream20101210-4836-1wkpjac-0.png is not recognized by the 'identify' command.>
요지는 identify 가 이미지를 인지하지 못한다는 건데, 체크사항은 두가지입니다.
1. identify의 path설정.
2. 이미지의 Path의 호출가능여부.
하나씩 확인합니다.
1. identify의 path설정.
구글링을 해보면 다음 두가지 방법이 나옵니다. 둘중 하나를 적용하고 Rails 재기동.
1.1. /config/enviroments/development.rb 에 다음 내용을 추가.
Paperclip.options[:command_path] = "user/imagemagic/path"
1.1. /config/initializers/ 에 paperclip.rb 를 생성
Paperclip.options[:command_path] = "user/imagemagic/path"
Paperclip.options[:image_magick_path] = "user/imagemagic/path"
Paperclip.options[:image_magick_path] = "user/imagemagic/path"
결국은 같은 이야기입니다. identify의 경로 지정을 해주는 것.
주의할점은 윈도우에서도 폴더구분을 \이 아닌 /로 해야하며, Program files 폴더는 progra~1로 표기해야 한다는 겁니다. C:/Progra~1/ImageMagick-6.6.6-Q8 이런식. 이것떄문에 Rails restart를 수십번했내요.
2. 이미지의 Path의 호출가능여부.
이게 좀 짜증났는데, 결론은 identify는 인자로 받는 path에서 한글을 인식못합니다.
windows가 아니면 거의 발생할일이 없으며, windows라 해도 Rails서버의 로그인계정이 한글이 아니면 발생하지 않습니다. 제가 돌린 서버는 계정이 '행정용'이였습니다. ㅡㅡ;
/log/ 를 확인해서 identify 가 이미지를 호출할때 사용하는 temp path가 풀영문이 되도록 설정하면 된됩니다.
그럼 다시 정상작동.
오늘의 교훈은 왠만하면 Windows에서 뭐 돌리지 말자.


Comments List