ImageCompress.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef __IMAGECOMPRESS_HEADER__
  2. #define __IMAGECOMPRESS_HEADER__
  3. #pragma once
  4. #include <gdiplus.h>
  5. using namespace Gdiplus;
  6. #pragma comment(lib, "gdiplus.lib")
  7. class ImageCompress
  8. {
  9. public:
  10. ImageCompress(void);
  11. ~ImageCompress(void);
  12. // 必须在CWinApp(CWinAppEx)派生类的InitInstance()函数中调用;
  13. inline static void InitGdiplusAtApp(){
  14. GdiplusStartupInput gdiplusStartupInput;
  15. GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
  16. }
  17. inline static void ShutdownGdiplus(){
  18. Gdiplus::GdiplusShutdown(m_gdiplusToken);
  19. }
  20. static BOOL ToCompressImage(IN const TCHAR *pImageSource, IN const TCHAR *pImageDest, IN const int &nXPiexel, IN const int &nYPiexel);
  21. private:
  22. static ULONG_PTR m_gdiplusToken;
  23. // format格式化方式;
  24. // pClsid返回的格式化类厂ID;
  25. static int GetEncoderClsid(IN const WCHAR* format, OUT CLSID* pClsid);
  26. void SaveImageToFile(IN Image *img, IN CString &path, IN ULONG quality = 100);
  27. // 以下两函数可以整合成一函数;
  28. static void ScaleZoombySpecificWidth(IN const int &nWidth, IN const int &nHeight, IN OUT CRect &rc);
  29. static void ScaleZoombySpecificHeight(IN const int &nWidth, IN const int &nHeight, IN OUT CRect &rc);
  30. };
  31. #endif