[첫화면으로]Perl/Prima

마지막으로 [b]

jpg 파일에서 일부를 잘라내는 작업을 Perl을 사용하여 자동으로 하려고 했는데, Image Processing 관련 모듈이 상당히 많다.

뭐가 뭔지도 모르겠고, "이미지를 처리"하는 기능과 "GUI를 제공"하는 기능이 섞여 있어서 뭘 써야 할지 모르겠는데, 일단 Prima 모듈의 경우 딱히 다른 라이브러리를 요구하지 않고 윈도우에 [strawberry perl] 5.10 이 설치되어 있는 상태에서 cpan 을 통해 바로 설치되더라. (신기해라...)

그런데 perldoc은 너무 불친절하고 홈페이지에서 제공하는 PDF문서는 GUI 창을 띄우는 예제부터 시작하고 있어서... 얼른 필요한 작업을 하는게 쉽지 않은 상태. 직접 테스트하면서 알아낸 것들을 적어 둔다.

1. 설치

희한하게... 분명 저번에는 cpan 에서 install Prima 하는 걸로 잘 되었던 걸로 기억하는데(기억이 잘못된 걸 수도), 지금(2011.12) 다시 하려니 도저히 안 된다. 설치는 되어 있었는데 bmp 포맷밖에 지원을 못 해서, 재설치하려는데 계속 컴파일 할 때 다른 이미지 포맷에 관련된 함수를 링크를 못 하여 에러.

결국 겸사겸사 펄도 업그레이드하자 싶어서, Strawberry Perl 5.10 이 깔려 있던 걸 아예 삭제하고, 5.12.3을 설치한 후, Prima 를 제일 먼저 설치를 시도했는데 또 같은 이유로 실패.

결국 다음과 같은 순서로 설치하였음

2. 몇가지 예제코드

주로 Cpan:Prima::Image에서 참고.

bmp 파일을 읽어서, 픽셀의 색을 얻거나 바꾸고, 일부를 잘라내어 저장하는 예:
use Prima;

# "0.bmp"를 읽음
my $image = Prima::Image->load('0.bmp');
die "$@" unless $image;

# 이미지의 가로와 세로 길이를 얻어냄
# 만일 width(10) 처럼 setter 로 사용할 경우 그림이 확대 또는 축소된다. (설정에 따라 이 동작을 바꿀 수 있는 듯)
print "Width : ", $image->width(), "\n";
print "Height: ", $image->height(), "\n";

# 가로10, 세로5 좌표 픽셀의 컬러값을 얻음
# 이 때 그림의 좌측 하단이 (0,0)이다.
printf "%06x", $image->pixel(10, 5);

# 5,0 자리 픽셀의 컬러를 지정
$image->pixel(5, 0, 0x00ff00);

# 일부 추출 (x오프셋, y오프셋, 폭, 높이)
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

Prima는 또 언제 손대셨네용~
-- aero 2011-11-8 4:52 pm

아, 사진 여러 개 묶어 한 사진으로 만든 걸 쪼개고 싶은 때가 있었는데 너무 귀찮아서 방법이 없을까 하다가ㅋㅋ 하루 쓰고 끝났죠.
-- Raymundo 2011-11-9 11:28 am

음 뭔진 몰라도 전 그냥 cpan Prima 해서 설치해봤더니 잘 설치 되는 것 같네요?
-- 조프 2011-12-13 1:07 am

거 참 제 컴퓨터가 도대체 뭐가 꼬여 있는건지ㅋ 영문을 모르겠군요. 저도 분명히 전에는 아무런 문제 없이 설치가 잘 되었었는데.
-- Raymundo 2011-12-13 3:57 pm

이렇게 펄 유저들의 덕력은 널리 알려지고...
-- 조프 2011-12-16 6:12 am

ㅋㅋㅋㅋㅋㅋㅋ
-- Raymundo 2011-12-16 11:54 am
이름:  
Homepage:
내용:
 


컴퓨터분류

마지막 편집일: 2012-2-11 12:25 am (변경사항 [d])
1919 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기