IMGCommon.h 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #ifndef __IMG_COMMON_20151214__
  2. #define __IMG_COMMON_20151214__
  3. #pragma once
  4. //#include "gdi.h"
  5. #include <gdiplus.h>
  6. using namespace Gdiplus;
  7. #pragma comment(lib, "gdiplus.lib")
  8. // WNetAddConnection的使用;
  9. #include <Winnetwk.h>
  10. #pragma comment(lib,"Mpr.lib")
  11. #include <string>
  12. using namespace std;
  13. #ifndef _UNICODE
  14. typedef string TString;
  15. #else
  16. typedef wstring TString;
  17. #endif
  18. enum // 缩放结果;
  19. {
  20. ZoomNull = 0, // 无缩放;
  21. ZoomIn = 1, // 缩小;
  22. ZoomOut = 2 // 放大;
  23. };
  24. #define GET_XPIX(x) ( x >> 16) // 高16位;
  25. #define GET_YPIX(y) (y & 0x0000ffff) // 低16位;
  26. #define SET_PIX(x,y) (( x << 16) | y) // 高低合并;
  27. #define INVALID_COPY_PIX ((DWORD)-1) // 传递此值,表示没有复制压缩;
  28. #if 0
  29. #define MAKEWORD(a, b) ((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8))
  30. #define MAKELONG(a, b) ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))
  31. #define LOWORD(l) ((WORD)(((DWORD_PTR)(l)) & 0xffff))
  32. #define HIWORD(l) ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))
  33. #define LOBYTE(w) ((BYTE)(((DWORD_PTR)(w)) & 0xff))
  34. #define HIBYTE(w) ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))
  35. #endif
  36. class IMGCommon
  37. {
  38. public:
  39. IMGCommon(void);
  40. ~IMGCommon(void);
  41. static ULONG_PTR m_gdiplusToken;
  42. public:
  43. static BOOL IsValidpath(IN CONST TString &strPath);
  44. static void Splitpath(IN CONST TCHAR *path, IN TCHAR * drive, IN size_t driveNumberOfElements, IN TCHAR * dir, IN size_t dirNumberOfElements, IN CONST int &nTimes);
  45. static BOOL CreateDirectoryEx(IN LPCTSTR lpNewDirectory);
  46. //////////////////////////////////////////////////////////////////////////
  47. static BOOL LoadImgFromFile(IN Image** pImg, LPCTSTR lpPath);
  48. static BOOL LoadImgFromBuffer(IN Image** pImg, IN BYTE* pBuffer, IN CONST INT& nBufLen);
  49. static BOOL LoadImgFromBuffer(IN Image** pImg, LPCTSTR lpPath);
  50. static Image* LoadImgFromResource( IN HMODULE hModule, IN LPCTSTR lpName, IN LPCTSTR lpType);
  51. //////////////////////////////////////////////////////////////////////////
  52. static BOOL GetOrientation(IN Image *pImg);
  53. static int GetEncoderClsid(IN CONST WCHAR* format, OUT CLSID* pClsid);
  54. static BOOL SaveImg2newfile(IN Image* pImg, IN CString strNewfile, IN ULONG uQuality);
  55. static BOOL SaveImg2newfile(IN Image* pImg, IN TString strNewfile, IN ULONG uQuality);
  56. static int ZoomImg(IN CRect &Imgrc, IN CONST DWORD &dwDisplayPix, OUT DWORD &dwZoomPix);
  57. static int ZoomImg(IN CONST DWORD &dwImgPix, IN CONST DWORD &dwDisplayPix, OUT DWORD &dwZoomPix);
  58. static BOOL ImgThumbnail(IN Image* pImg, IN CONST DWORD &dwDisplayPix, IN CString strNewfile, IN ULONG uQuality);
  59. static BOOL ImgThumbnail(IN LPCTSTR lpImgpath, IN CONST DWORD &dwDisplayPix, IN CString strNewfile, IN ULONG uQuality);
  60. static BOOL ImgThumbnail(IN CONST TString &strImgpath, IN CONST DWORD &dwDisplayPix, IN TString strNewfile, IN ULONG uQuality);
  61. static BOOL SimpleImgThumbnail(IN LPCTSTR lpImgpath, IN CONST DWORD &dwDisplayPix, IN CString strNewfile, IN ULONG uQuality);
  62. // 给指定的图片加图片水印(位置、大小暂不支持);
  63. static Image* AppendImgWatermark(IN Image* pImg, IN Image* pWatemarkImg);
  64. static Image* AppendImgWatermark(IN Image* pImg, IN LPCTSTR lpWatemarkImgpath);
  65. static Image* AppendImgWatermark(IN LPCTSTR lpImgpath, IN Image* pWatemarkImg);
  66. static Image* AppendImgWatermark(IN LPCTSTR lpImgpath, IN LPCTSTR lpWatemarkImgpath);
  67. static BOOL AppendImgWatermark(IN Image* pImg, IN Image* pWatemarkImg, IN LPCTSTR lpSaveImgpath);
  68. static BOOL AppendImgWatermark(IN Image* pImg, IN LPCTSTR lpWatemarkImgpath, IN LPCTSTR lpSaveImgpath);
  69. static BOOL AppendImgWatermark(IN LPCTSTR lpImgpath, IN LPCTSTR lpWatemarkImgpath, IN LPCTSTR lpSaveImgpath);
  70. // 给指定图片加文字水印(位置、字体、颜色暂不支持);
  71. static Image* AppendWordWatermark(IN Image* pImg, IN LPCTSTR lpWatemarkString);
  72. static Image* AppendWordWatermark(IN LPCTSTR lpImgpath, IN LPCTSTR lpWatemarkString);
  73. static BOOL SaveBitmap(IN CDC *pDC, IN CBitmap* pBitmap, IN CONST INT& nBitdepth, IN const INT& nWidth, IN const INT& nHeight, IN LPCTSTR lpSavepath);
  74. static BOOL SaveBitmap2(IN CDC *pDC, IN CBitmap* pBitmap, IN CONST INT& nBitdepth, IN const INT& nWidth, IN const INT& nHeight, IN LPCTSTR lpSavepath);
  75. static void DrawString(IN CDC* pdc, IN CONST INT& nFontSize, IN LPCTSTR lpFontName, IN LPCTSTR lpString, IN OUT CRect &rcString);
  76. };
  77. #endif