2014년 9월 16일 화요일

[미완] [Win32/MFC] CxImage

CxImage 설정

오픈소스로 zlib라이센스로 상용으로 써도 상관이 없다.

이미지 출력 라이브러리다.

홈페이지(http://www.xdp.it/cximage/)에서 cximage701_full 다운
소스포지에 가면(http://sourceforge.net/projects/cximage/) Cximage702_full가 있다.
701은 VS2005 702는 VS2010을 지원한다.

압축해제후 CxImgLib.sin 실행
CxImage, jpeg, png, zlib 프로젝트 설정을 변경 해야 한다.
1. 구성 속성 > 일반 > MFC사용 -> 표준 Windows라이브러리 사용

2. 구성 속성 > C/C++ > 코드 생성 > 런타임 멤버 맞춤 Debug(Unicode Debug)는 다중 쓰레드 디버그(/MTd), Release(Unicode Release)는 다중 쓰레드(/MT)

소스 수정
CxImage 프로젝트의 ximacfg.h을 열고 원하는 formats의 define값을 1로 변경
나는 BMP, GIF, JPG, PNG, ICO 5개의 이미지만 쓰기때문에 이것만 1이고 나머지는 0으로 셋팅

프로젝트에서 CxImage, jpeg, png, zlib 4개 프로젝트만 컴파일한다.
jpeg와 png프로젝트는 format값을 1로 해서 해야하고
zlib프로젝트는 png프로젝트가 zlib를 사용하기때문에 png format지원시 꼭 zlib프로젝트도 해야한다.

컴파일 후 각 프로젝트의 생성폴더에 가보면 lib파일이 있다.

그리고 cxImage의 헤더파일이 필요하다.
cximage701_full\CxImage\ 폴더에 가서 헤더파일 25개를 복사하면 된다.

이렇게 4개의 lib파일과 25개의 헤더파일면 준비 끝
나는 밑에 이미지처럼 CxImage폴더를 만들고 그 안에 include에 헤더파일 25개를 넣고
lib폴더에 각 컴파일별로 lib파일을 넣어놓았다.


실제사용 예
win32로 기본창 출력 프로그램을 만들고 나서
아까 만든 CxImage폴더를 테스트 프로젝트에 복사후(나는 .sln이 있는 폴더에 복사를 했다.)
1. include 추가
속성 > C/C++ > 일반 > 추가 포함 디렉터리 -> ..\Cximage\include

2. lib 추가
속성 > 링커 > 입력 > 추가 종속성 ->
..\CxImage\Lib\Unicode_Debug\CxImage.lib
..\CxImage\Lib\Unicode_Debug\Jpeg.lib
..\CxImage\Lib\Unicode_Debug\png.lib
..\CxImage\Lib\Unicode_Debug\zlib.lib

설정은 다 끝났다.
소스에서는 ximage.h 헤더파일 추가 후
CxImage를 생성해서 사용하면 된다.

CxImage 사용법은 CxImage 문서나 인터넷을 참조하면 되고
(나도 출력만 암)

현재 테스트 프로젝트 컴파일시
1>LINK : warning LNK4098: 'LIBCMT' defaultlib가 다른 라이브러리와 충돌합니다. /NODEFAULTLIB:library를 사용하십시오
Warning가 발생중;;

나는 BMP, JPG, PNG만 출력하면 되기때문에 이 3개의 포맷만 설정했지만 자신이 필요한 포맷을 설정하면 된다.
그리고 dll도 만들려고 했는데 에러가 나와서 dll은 포기 (담에 시간될때 해봐야 겠다.)

테스트 파일 첨부합니다.밑에 주소(구글드라이브) 클릭설정을 모르겠네;;
그리고 구글아이디도 필요하네.. 다른 방법을 생각해봐야겠다.(일단 업)
구글은 압축이 깨져서 다음에 업로드 함
http://cfile211.uf.daum.net/attach/2170674A559A0450252A13

* 나는 이미지처리는 CxImage만 있으면 될 줄 알았는데
libjpeg가 있다.
libjpeg  > libjpeg 6b-SIMD > libjpeg-turbo 파생이 되었는데
CxImage는 libjpeg 6b를 사용중이라고 한다. (현재는 8b이상 나왔다고 함)
속도가 느리다고 함 libjpeg-turbo는 속도가 빠르고 크롬에서 사용한다고 한다.
그래서 담에 .jpg는 libjpeg-turbo를 쓰고 나머지는 CxImage로 쓰는게 좋을 듯

댓글 없음:

댓글 쓰기