jpg 파일에서 일부를 잘라내는 작업을 Perl을 사용하여 자동으로 하려고 했는데, Image Processing 관련 모듈이 상당히 많다.
뭐가 뭔지도 모르겠고, "이미지를 처리"하는 기능과 "GUI를 제공"하는 기능이 섞여 있어서 뭘 써야 할지 모르겠는데, 일단 Prima 모듈의 경우 딱히 다른 라이브러리를 요구하지 않고 윈도우에 [strawberry perl] 5.10 이 설치되어 있는 상태에서 cpan 을 통해 바로 설치되더라. (신기해라...)
그런데 perldoc은 너무 불친절하고 홈페이지에서 제공하는 PDF문서는 GUI 창을 띄우는 예제부터 시작하고 있어서... 얼른 필요한 작업을 하는게 쉽지 않은 상태. 직접 테스트하면서 알아낸 것들을 적어 둔다.
희한하게... 분명 저번에는 cpan 에서 install Prima 하는 걸로 잘 되었던 걸로 기억하는데(기억이 잘못된 걸 수도), 지금(2011.12) 다시 하려니 도저히 안 된다. 설치는 되어 있었는데 bmp 포맷밖에 지원을 못 해서, 재설치하려는데 계속 컴파일 할 때 다른 이미지 포맷에 관련된 함수를 링크를 못 하여 에러.
결국 겸사겸사 펄도 업그레이드하자 싶어서, Strawberry Perl 5.10 이 깔려 있던 걸 아예 삭제하고, 5.12.3을 설치한 후, Prima 를 제일 먼저 설치를 시도했는데 또 같은 이유로 실패.
결국 다음과 같은 순서로 설치하였음
- Prima::codecs::win32를 cpan을 통해 설치한 후
- 예전에 설치할 때는 Prima를 설치할 때 이것도 알아서 설치해줬고, 나는 아예 그 사실조차 모른채로 자연스럽게 설치가 끝났던 것 같은데...
- 아래의 바이너리 다운로드를 사용하려는데 굳이 이 codecs 모듈을 설치해야 되는지도 의문이긴 한데, 설치하지 않고 곧바로 바이너리 설치를 해 보진 않았음
- Prima 자체는 홈페이지의 [바이너리 다운로드] 페이지에서 받아서
perl ms_install.pl
하여 설치
- 설치가 끝난 후
perl -MPrima
로 실행했을 때, "libXpm_.dll을 찾을 수 없으므로 응용 프로그램을 시작하지 못했습니다"라고 에러가 뜬다면, c:\strawberry\c\bin\libXpm_.dll
파일이 있는지 살펴보라. 없다면 Strawberry Perl 버전 5.10.0 부근의 초반 버전을 사용하고 있을 것이다. [딸기 펄 홈페이지]에서 몇 개 버전의 zip 포맷을 받아서 살펴보니 5.10.1 이상에는 들어 있는 듯. 즉 딸기 펄도 업데이트해 주어야 하겠음
2. 몇가지 예제코드
주로 Prima::Image에서 참고.
bmp 파일을 읽어서, 픽셀의 색을 얻거나 바꾸고, 일부를 잘라내어 저장하는 예:
use Prima;
my $image = Prima::Image->load('0.bmp');
die "$@" unless $image;
print "Width : ", $image->width(), "\n";
print "Height: ", $image->height(), "\n";
printf "%06x", $image->pixel(10, 5);
$image->pixel(5, 0, 0x00ff00);
my $newimage = $image->extract(5, 0, 12, 2);
$newimage->save('01.bmp');
3. 코덱 문제
처리할 수 있는 코덱의 목록 확인은 다음과 같이:
use Prima;
print "$_->{fileShortType}\n" for @{Prima::Image->codecs};
D:> test.pl
JPEG
PNG
TIFF
GIF
XBM
XPM
BMP
4. 기타 & Comments
컴퓨터분류