안녕하세요? 착한이입니다.
Windows CE 5.0 , Windows CE 6.0, Embedded Compact 7 에는
기본적으로 IImage 라는 이미지 코덱을 포함하고 있습니다.
BMP, JPEG, GIF, PNG 파일을 지원합니다.
IImage 를 이용하면 이미지 회전 밝기 조절이 가능합니다.
아래 코드를 참고 하시길 바랍니다.
그럼 즐거운 개발하세요. ^^
소스 코드는 없지만 아래 코드를 복사해서 사용하시면 되겠지요. ^^
//코드 설명
CoInitializeEx(NULL, COINIT_MULTITHREADED); // COM 초기화 부분
HDC hdc=::GetDC(GetSafeHwnd()); // 그려질 윈도위 DC를 얻음
// Image loading
IImagingFactory *pImagingFactory=NULL;
// IImage 객체 포인터
IImage *pImage=NULL;
// 이미지 파일 명
TCHAR *pImageFilename=L"\\Storage Card\\kms.png";
// IImaingFactory 를 생성 합니다.
hRet = CoCreateInstance(CLSID_ImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_IImagingFactory, (void**) &pImagingFactory);
// 실패했다면 그냥 리턴 ^^
if (FAILED(hRet)) return;
// 이미지 파일에서 IImage 객체를 얻어 옵니다.
hRet=pImagingFactory->CreateImageFromFile(pImageFilename,&pImage);
if (FAILED(hRet)) return; // 실패 했으면 리턴
// IBitmapImage 객체 포인터
IBitmapImage *pBitmapImage=NULL;
IBitmapImage *pNewBitmapImage=NULL;
// IBasicBitmapOps 객체 포인터
IBasicBitmapOps *pBasicBitmapOps = NULL;
// IImage 에서 IBitmapImage 객체를 얻어 옵니다.
pImagingFactory->CreateBitmapFromImage(pImage,0,0,PixelFormatDontCare,InterpolationHintDefault,&pNewBitmapImage);
// IBitmapImage 에서 IBasicBitmapOps 객체를 얻어 옵니다.
hRet = pNewBitmapImage->QueryInterface(IID_IBasicBitmapOps, (void**)(&pBasicBitmapOps));
// 밝기를 10% 증가 시킵니다.
hRet= pBasicBitmapOps->AdjustBrightness(0.1);
//이미지를 90도 회전 시키고 pBitmapImage 에 저장합니다.
hRet = pBasicBitmapOps->Rotate(90, InterpolationHintDefault, &BitmapImage);
// IBasicBitmapOps 객체를 릴리즈 시켜줍니다.
pBasicBitmapOps->Release();
// 회전한 이미지를 저장할 IImage 객체 포인터
IImage *pNewImage=NULL;
// IBitmapImage 에서 IImage 객체를 얻어 옵니다.
hRet=pBitmapImage->QueryInterface(IID_IImage,(void **)&pNewImage);
//IBitmapImage 를 삭제 합니다.
pBitmapImage->Release();
pNewBitmapImage->Release();
//이미지를 Draw 합니다.
pNewImage->Draw(hdc,NULL,NULL);
// IImage 객체를 삭제합니다.
if(pNewImage) pNewImage->Release();
if(pImage) pImage->Release();
// ImagingFactory 객체를 삭제합니다.
if(pImagingFactory) pImagingFactory->Release();
//DC를 해제
::ReleaseDC(GetSafeHwnd(),hdc);
IImage 로 이렇게 하면 이미지를 회전 시킬 수 있습니다. 또한 밝기 조절 contrast 등도 조절할 수 있습니다.
수학적으로 계산해서 처리하는 것보다 더 간단하니 테스트 용으로 사용하시면 좋을 듯 합니다.
단, IImage를 사용하실려면 지원되는지 확인하시는 것 잊지 마세요.
그럼 좋은 하루 보내세요. ^^