티스토리 뷰

GDI+ 를 이용한 CDC -> JPG 저장 예제 입니다.

  1. CRect rt;
  2. GetClientRect(&rt);
  3.  
  4. CDC *dc = GetDC(); // DC를 얻어옴
  5. CDC memDC;
  6. memDC.CreateCompatibleDC(dc); // 메모리 DC를 만들고
  7.  
  8. CBitmap bmpbuffer;
  9. bmpbuffer.CreateCompatibleBitmap(dc, rt.Width(), rt.Height()); // 호환성 조절
  10. CBitmap *oldBitmap = (CBitmap *)memDC.SelectObject(&bmpbuffer);
  11. CBrush brush;
  12. brush.CreateSolidBrush(RGB(255,255,255));
  13. memDC.FillRect(&rt, &brush);
  14. //...
  15. // DC를 이용하여 많은 그림 그리기 작업들..
  16. //...
  17.  
  18. HPALETTE hpal;
  19. hpal = (HPALETTE)GetStockObject(DEFAULT_PALETTE);
  20.  
  21. //Gdiplus::Bitmap을 만든다!!!
  22. Bitmap image((HBITMAP)bmpbuffer, hpal);
  23. int width = image.GetWidth();
  24. int height = image.GetHeight();
  25.  
  26. /* GDI plus로 저장하기 !! */
  27. CLSID jpegClsid;
  28. GetEncoderClsid(L"image/jpeg", &jpegClsid);
  29. image.Save(L"test.jpg", &jpegClsid, NULL);
  30.  
  31. ReleaseDC(&memDC); // 메모리 해제 ???

 

  1.  
  2. int GetEncoderClsid(const WCHAR *format, CLSID *pClsid)
  3. {
  4. UINT num = 0;
  5. UINT size = 0;
  6. ImageCodecInfo * pImageCodecInfo = NULL;
  7. GetImageEncodersSize(&num, &size);
  8. if(size == 0)
  9. return -1;
  10.  
  11. pImageCodecInfo = (ImageCodecInfo *)(malloc(size));
  12. if(pImageCodecInfo == NULL)
  13. return -1;
  14.  
  15. GetImageEncoders(num, size, pImageCodecInfo);
  16. for(UINT j = 0 ; j < num; ++j)
  17. {
  18. if(wcscmp(pImageCodecInfo[j].MimeType, format) == 0)
  19. {
  20. *pClsid = pImageCodecInfo[j].Clsid;
  21. free(pImageCodecInfo);
  22. return j;
  23. }
  24.  
  25. }
  26. free(pImageCodecInfo);
  27. return -1;

BMP파일을 Jpeg로 변환하는 콘솔 프로그램 입니다.

 

사용법:

Bmp2Jpg -i "BMP 파일 경로" -o "Jpg 파일 경로" -q 품질

 

-o를 생략하면 BMP 파일의 경로를 .jpg로 확장자를 붙여서 저장 합니다.

 

-q는 0~100까지 지정하며 높을수록 품질이 좋습니다. (기본값: 75)

 

빌드시 링크 오류가 나면 아래 링크 참조...

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8438&page=1

 

 

참고:

XGetopt : http://www.codeproject.com/KB/cpp/xgetopt.aspx

Setting JPEG Compression Level : http://msdn.microsoft.com/en-us/library/ms533844(VS.85).aspx

 

 

개발 환경:

Visual Studio .NET 2003 / Microsoft Platform SDK for Windows Server 2003 R2

Bmp2Jpg.zip
다운로드


초록곰의 블로그 입니다.


세상 살아가는 이야기로 그려지고 있습니다.
링크오류나는 게시물은 댓글 달아 주시면 바로 수정 하겠습니다.




흑인 간지 폭풍 사진

 




세상살이에 도움이 되는 명언 !!
 

 

 

성공은 영원하지 않고, 실패는 치명적이지 않다. (마이크 디트카, 성공명언)

기회를 찾아야 기회를 만든다. (패티 헨슨, 성공명언)

계획 없는 목표는 한낱 꿈에 불과하다. (생텍쥐페리, 성공명언)

성공의 커다란 비결은 결코 지치지 않는 인간으로 인생을 살아가는 것이다. (알버트 슈바이처, 성공명언)

나는 성공의 열쇠는 모른다. 그러나 실패의 열쇠는 모두의 비위를 맞추려 하는 것이다. (빌 코스비, 성공명언)

기회를 찾아야 기회를 만든다. (패티 헨슨, 성공명언)

성공은 열심히 노력하며 기다리는 사람에게 찾아온다. (토마스 A. 에디슨, 성공명언)

위대한 사람은 기회가 없다고 원망하지 않는다. (랄프 왈도 에머슨, 성공명언)

성공의 8할은 일단 출석하는 것이다. (우디 알렌, 성공명언)


늘 명심하라. 성공하겠다는 너 자신의 결심이 다른 어떤 것보다 중요하다는 것을. (에이브러햄 링컨, 성공명언)

성공이 그렇게 달콤한 것은 결코 성공하지 못한 사람들이 있기 때문이다. (에밀리 디킨스, 성공명언)


"그건 할 수 없어"라는 말을 들을 때마다 나는 성공이 가까웠음을 안다. (마이클 플래틀리, 성공명언)

인생에서 실패한 사람 중 다수는 성공을 목전에 두고도 모른 채 포기한 이들이다. (토마스 A. 에디슨, 성공명언)

성공한 사람은 대개 지난번 성취한 것 보다 다소 높게, 그러나 과하지 않게 다음 목표를 세운다. 이렇게 꾸준히 자신의 포부를 키워간다. (커트 르윈, 성공명언)

성공을 겨냥하지 말라 - 성공을 겨냥하고 목표로 삼을수록 더욱 놓치게 될 것이다. 행복과 마찬가지로 성공은 추구의 대상이 될 수 없기 때문이다. 성공은 결과로 발생해야 한다… 자신보다 더 큰 행로에 전념함으로써 얻어지는 뜻하지 않은 부작용으로서 말이다. (빅터 프랭클, 성공명언)

인생에 있는 큰 비밀은 큰 비밀 따위는 없다는 것이다. 당신의 목표가 무엇이든 열심히 할 의지가 있다면 달성할 수 있다. (오프라 윈프리, 성공명언)

우리는 단지 우리가 인생이나 전쟁 혹은 다른 어떤 것에서든 하나의 최우선적인 목표를 설정하고 다른 모든 고려 사항을 이 하나의 목적에 종속시킬 때만 성공한다. (드와이트 데이비드 아이젠하워, 성공명언)

성공을 위해서는 이기적일 필요가 있다. 그렇지 않고서는 어떤 것도 성취할 수 없다. 최고 수준에 올라가면 이기적이지 않아야 한다. 다른 사람들과 가까이하라. 교류하며 지내라. 고립되지 말아라. (마이클 조던, 성공명언)

기회가 찾아오는 정확한 때와 장소를 알아보고 그 기회를 잡을 수 있어야 한다. 세상에 기회는 많다. 그저 손 놓고 앉아 있을 수는 없다. (엘렌 멧칼프, 성공명언)

뜻을 세운다는 것은 목표를 선택하고, 그 목표에 도달할 행동과정을 결정하고, 그 목표에 도달할 때까지 결정한 행동을 계속하는 것이다. 중요한 것은 행동이다. (마이클 핸슨 , 성공명언)

목표에 도달하는 가장 확실한 방법은 그 목표가 아니라 그 너머의 더 야심찬 목표를 향해 나아가는 것이라는 점은 역설적이지만 참되고 중요한 인생의 원칙이다. (아놀드 토인비, 성공명언)

능수능란하고 용감한 자들은 군지휘관으로 길렀다. 민첩하고 유연한 자들은 말을 다루도록 했다. 능숙하지 않은 자들은 작은 채찍을 주어 양치기가 되게 하였다. (칭기즈칸, 성공명언)

자신이 성공하는 내면의 그림을 마음 속에 명확히 그리고 지울 수 없게 각인시켜라. 이 그림을 끈질기게 간직하라. 절대 희미해지도록 내버려두지 마라. 그대의 마음이 이 그림을 실현하기 위해 노력할 것이다. 당신의 상상 속에 어떠한 장애물도 두지 마라. (노먼 빈센트 필, 성공명언)

우리의 목표는 이것이다. 우리에게 주어진 이 삶을 최대한 의미 있게 사는 것, 자부심을 느낄 수 있도록 올바르게 사는 것, 죽은 후에도 우리의 일부가 영속도록 올바르게 행동하는 것. (오스왈드 스펭글러, 성공명언)

오해하지 마십시오. 저는 핵 에너지를 사랑합니다. 다만 핵분열보다는 핵융합을 선호하는 것 뿐입니다. 마침 안전하게 저장되어 있는 거대한 핵융합 원자로 하나가 수백 마일 떨어진 곳에 있습니다. 그 원자로는 우리가 평생 사용할 수 있는 것보다 많은 것(에너지)을 단 8분 만에 전달할 수 있습니다. 그것도 무선으로! (윌리엄 맥도나우, 성공명언)

성공을 자축하는 것도 중요하지만 실패를 통해 배운 교훈에 주의를 기울이는 것이 더 중요하다. (빌 게이츠, 실패명언)


신은 우리가 성공할 것을 요구하지 않는다. 우리가 노력할 것을 요구할 뿐이다. (마더 테레사, 노력명언)

성공하려고 아무리 열심히 노력해도 실패에 대한 두려움이 마음에 가득하다면, 노력하지 않게 되고 정진이 허사가 되어 성공은 불가능해질 것이다. (보두앵, 노력명언)

사람을 알기위해서는 어떻게 목표 달성에 실패하는가 보다는, 어떻게 목표 달성에 성공하는가를 살피라. 왜냐하면 실패할 때에는 자존심이 우리를 지탱해 주지만 성공할 때에는 자존심이 우리를 배반하기 때문이다. (찰스 칼렙 콜튼, 자신감명언)


내 어머니는 성취와 성공의 차이를 분명히 하셨다. 어머니는 말씀하셨다. "성취란 네가 열심히 공부하고 일했으며 네가 가진 최선을 다했다는 인식이다. 성공은 남들에게 추앙받는 것이며, 이것이 멋진 일이긴 하나 그렇게 중요하거나 만족을 주는 것은 아니다. 항상 성취를 목적으로 삼고 성공에 대해선 잊어라." (헬렌 헤이스, 공부명언)

관습적인 성공을 인생의 중요한 목표라고 젊은이들에게 설교하지 말아야 한다. 학교와 인생에서 가장 큰 동기는 일의 기쁨, 그 결과에서 얻는 기쁨, 그리고 그 지역에 이바지한 가치를 아는 것이다. (알버트 아인슈타인, 공부명언)

인내의 기술을 배워라. 목표를 달성할 수 있을지 마음이 불안해 질 때, 단련한 대로 마음을 다스려라. 인내하지 못하면 긴장감과 두려움이 생기고 낙담해 실패한다. 인내할 줄 알아야 자신감, 결단력, 합리적 시각이 생겨서 끝내 성공할 수 있다. (브라이언 아담스, 인내명언)

세상의 그 무엇도 인내를 대신할 수 없다. 재능은 인내를 대신할 수 없다. 재능이 있지만 성공하지 못한 사람들이 수두룩하다. 천재도 대신할 수 없다. 천재가 보상 받지 못한다는 것은 거의 속담이 될 정도다. 교육도 아니다. 세상은 교육 받은 노숙자들로 넘쳐난다. 인내와 의지만이 모든 것을 가능케한다. "계속 전진하라"는 구호는 지금껏 그래왔던 것처럼 앞으로도 인류의 문제를 해결해 줄 것이다. (캘빈 쿨리지, 인내명언)


나는 우리 각자에게 지문만큼 고유한 개인적 소명이 있고, 성공하는 최선의 방법은 자신이 사랑하는 것을 발견한 후, 열심히 일하고, 우주의 에너지가 자신을 인도하도록 내맡기는 가운데, 자신이 사랑하는 것을 봉사의 형태로 타인들에게 내어주는 방법을 찾는 것이라고 믿게 되었다. (오프라 윈프리, 희망명언)

반응형
댓글