전산쟁이의 카피질

뒤로 검색

CxImage를 이용한 MFC기반의 Image Reader 만들기

2009/03/04 20:19

출처 : http://guru1013.egloos.com/1107342

Jpeg과 같은 외부 라이브러리가 필요한 파일을 읽기 위해서 삽질을 좀 하다가 CxImage 라는것을 알게 되었다.

라이브러리 등록 과정이 생각보다 까다로워서 웹페이지도 뒤져보고 그랬는데 제대로 된 설명이 없더라 -_-;
(내가 못찾은거겠지만)

결국 도서관에서 관련서적을 하나 빌려서 라이브러리를 사용하는데에 성공하게 되었음.

혹시나 나같은 사람이 있을까 몰라서 포스팅을 하나 쓴다.
(사실은 책을 반납해야되서 나중에 까먹을까봐)

본 포스트는 '홍릉과학출판사'의 '오픈소스 CxImage를 이용한 Visual C++ 디지털 영상처리' 라는 책을 기반으로 썼으며,
다소 불필요해 보이는 부분에 대한 설명은 생략한다.



1. 우선 http://www.xdp.it/ 에 들어가서 좌측에 Downloads 메뉴를 클릭하면 다음과 같은 창이 뜬다.

대부분은 아직 VC++ 6.0 사용자이므로 우선 빨간 동그라미가 쳐진것을 받게 될 것이다.
만약 .net frame을 사용중이라면 그 위의것을 받도록 하자.

압축을 해제하고 가장 상위 디렉토리에 있는 CxImgLib.dsw를 실행하자.


2. CxImage 라이브러리를 생성해야 하므로 아래와 같이 File 탭에 CxImage files과 CxImageCrtDll, CxImageMfcDll 우클릭시 나오는 팝업에서 Build를 클릭한다. 이렇게 하면 라이브러리가 생성된다.


자 이렇게 하면 프로젝트 폴더의 Debug에 cximage.lib 라는 정적 라이브러리 파일이 생성된다.
이로서 CxImage를 사용하기 위한 기본적인 준비는 끝났다.
이제 이를 이용해서 MFC의 MDI Application을 만들어보도록 하자.

3. VC++ 6.0을 실행시킨후 새 프로젝트로 MDI Application을 하나 만들자.
편의상 프로젝트명은 FirstCxImage로 하였고, 이 부분은 입맛대로 바꾸어도 좋으나, 튜토리얼을 수월하게 따라가려면 우선 FirstCxImage로 하도록 하자.
세팅은 모두 Default로 진행해도 좋으나, 큰 이미지가 load 되었을 때를 대비해서 Step 6 of 6 에서 Base class에 CScrollView를 눌러주도록 한다.



자 이제 기본 틀은 만들었고, 본격적으로 CxImage와 연동을 해보도록 하자.

4. 우선 CxImage 관련 헤더파일들을 FirstCxImage 프로젝트에 복사를 해야 한다.
FirstCxImage/include 디렉토리를 만들고 cximage599c_full/CxImage/의 모든 헤더파일을 복사하도록 하자.


복사가 완료되면 Alt+F7을 눌러서 Project Setting 을 변경해야 한다.
다음과 같이 빨간 동그라미가 쳐진 부분을 유심히 보면서 바꾸어 보도록 하자.
이 과정을 끝내면 헤더파일의 include를 위한 준비가 마무리 된다.


이제는 include를 통해서 실제 코드에서 쓸 수 있도록 해야 하는데,
추천하고 싶은 방법은 stdafx.h에 #include "xImage.h" 를 추가하는 방식이다.


다음에는 라이브러리 파일을 복사한다. CxImage599c_full 디렉토리 하위에서 *.lib로 검색을 해서 나온 파일들을
FirstCxImage/lib 디렉토리를 만들어서 여기에 복사한다.

또한 정적 링크 라이브러리를 복사해야 한다.
cximage.lib를 FirstCxImage/Debug에 복사하도록 하자.
위 검색결과에서 나온 cximage.lib를 복사해도 된다.

다음으로는 project setting 을 다시 열어서 Object/library modules 에다가
Debug/cximage.lib ./lib/png.lib ./lib/Jpeg.lib ./lib/zlib.lib
 ./lib/Tiff.lib ./lib/j2k.lib ./lib/jbig.lib ./lib/jasper.lib
를 추가하도록 하자.


... 드디어 길고 긴 라이브러리 연동이 끝났다.
FirstCxImage를 컴파일 하고, 에러가 없으면 잘 된거고, 에러가 나면 당신이 뭔가 실수를 한 것이다. 한마디로 내 잘못이 아니라는 뜻이니까 따지지 말라는 것이지 으하하하하하핳하ㅏ(죄송)

이제 API를 이용하여 이미지를 Load하고 띄우는것만 하면 된다.
API 써서 이미지 읽는법은 다음 포스팅에...
이 페이지는 Textcube 1.10.0 : beta 1 로 구동됩니다 데스크탑 화면