ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CxImage를 이용한 JPEG출력.
    개발/지름 2007. 11. 10. 06:19
    반응형

    CxImage를 이용한 JPEG출력.

    출처는....서핑하다가 어디서 긁어왔는데...
    기억을 못하겠다.
    나중에 찾으면 바꾸던지...포스트를 새로 쓰던지 해야겠다.

    MFC에서는 JPG를 처리하는 라이브러리가 포함되어 있지 않기 때문에 MFC로 응용프로그램을 개발할 때 JPG를 출력하려면 따로 공개된 라이브러리를 구해서 사용하여야한다. 공개된 라이브러리 중 CxImage 가 가장 쓸만하다.
    해당 홈페이지(http://www.codeproject.com/bitmap/cximage.asp)에 가보면 Lite version과 Full version을 제공하는데, 이중 Full version을 다운받아야 JPG를 사용 할 수 있다.

    <>



    | 방법

    먼저 Static Library(lib file)를 생성하기 위해 CxImgLib.dsw 파일을 연다. 프로젝트를 열면 단순히 하나의 프로젝트만 들어 있는 게 아니라 12개의 프로젝트가 포함되어 있는 걸 확인할 수 있다. 이 프로젝트들을 전부 컴파일 할 필요는 없고 Project - Set Active Project(VC++6.0 기준) 메뉴를 통해서 컴파일하려는 프로젝트만을 선택하여 Build(F7)하면 된다.
    lib 파일을 생성하기 전에 ximacfg.h 설정내용을 상황에 맞게 바꿔 주는 것이 좋다.
    사용하려는 파일 포맷은 1로 사용하지 않을 것은 0으로 설정해 준다. 불필요한 부분에 포함되지 않으므로 lib 파일의 크기가 좀 더 줄어든다.


    <>


    cximage.lib (CxImage Project에서 생성)
    Jpeg.lib (jpeg Project에서 생성)


    이제 JPG를 출력하기 위해 위의 2 파일을 생성한다. 라이브러리 파일을 만들었다고 끝난게 아니라, 자신이 만들고 있는 프로젝트에 포함시키려면 헤더파일은 있어야 한다.
    압축을 푼 폴더 중에 CxImage 폴더 안에 있는 헤더파일(.h)을 따로 복사하여 저장해 둔다.


    <>


    자 이제 위 폴더를 자신의 프로젝트가 저장된 폴더 안에 복사한 후 프로젝트에 추가하면 라이브러리를 사용할 수 있다. (위 폴더 이름을 S_Cximage 라고 하자.)

    자신의 프로젝트를 열고 프로젝트 세팅 화면을 띄운다.(6.0 에서는 단축키 Alt+F7)


    C/C++ Tab중에서 Category : Preprocessor 로 설정한다. Additional include directories 부분에 자신이 따로 만들어 두었던 라이브러리 폴더의 경로를 추가한다.
    Link Tab에서 Object/library modules 부분에 좀 전에 생성한 cximage.lib과 Jpeg.lib의 경로를 추가한다.



    이제 기본적인 환경 설정은 모두 끝이 났다. 본격적으로 CxImage Library를 사용하여 JPG파일을 출력해 보자.
    ① Dialog Based 프로젝트를 하나 생성한다. (예 : Test)
    ② TestDlg.h 파일에 #include 를 추가한다.
    ③ Dialog에 Picture Control을 추가한 후에 ID를 IDC_PIC로 바꾸고, Type을 Bitmap으로 설정한다.
    ④ 클래스 위자드를 통해서 이 Picture Control과 연결된 컨트롤 변수를 하나 추가하자.
    ( 변수명은 m_pic 이라고 설정)




    ⑤ 자 이제 아래와 같이 코딩하고 실행하면 끝이다. ㅡ,.ㅡ;;;
    CxImage cimage;
    HBITMAP m_bitmap = NULL;
    cimage.Load("kim.jpg", CXIMAGE_FORMAT_JPG);
    m_bitmap = cimage.MakeBitmap(m_pic.GetDC()->m_hDC);
    m_pic.SetBitmap((HBITMAP)m_bitmap);
    반응형

    댓글

Designed by Tistory.