IMGCommon.h 5.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #ifndef __IMG_COMMON_20151214__
  2. #define __IMG_COMMON_20151214__
  3. #pragma once
  4. #include "IMGBasetype.h"
  5. #include <gdiplus.h>
  6. using namespace Gdiplus;
  7. #pragma comment(lib, "gdiplus.lib")
  8. class IMGCommon
  9. {
  10. public:
  11. IMGCommon(void);
  12. ~IMGCommon(void);
  13. static ULONG_PTR m_gdiplusToken;
  14. public:
  15. static INT IsCorrectExt( IN const TString &fext, OUT TString* lpMistakenExt = NULL );
  16. static BOOL ExtMerge( IN CONST TString& ext1, IN CONST TString& ext2, OUT TString &merge );
  17. // 过滤非复制扩展名的文件,同时去掉缩略图,保留指定复制扩展名的文件;
  18. static CString GetFileName(IN CONST CString& strfile);
  19. static void GetFilteringImg(IN CStringArray &AryImgs, IN LPCTSTR lpCopyExt, IN BOOL bPickoutThumbnail = TRUE);
  20. static void GetFilteringImg(IN STR_VEC &vtImgs, IN LPCTSTR lpCopyExt, IN BOOL bPickoutThumbnail = TRUE);
  21. static void SubgroupExt(IN STR_VEC &vtAllImgs, IN LPCTSTR lpSubgroupExt, OUT CStringArray &AryImgs); // 分组扩展名;
  22. static void SubgroupExt(IN STR_VEC &vtAllImgs, IN LPCTSTR lpSubgroupExt, OUT STR_VEC &vtImgs); // 分组扩展名;
  23. //////////////////////////////////////////////////////////////////////////
  24. static BOOL LoadImgFromFile(IN Image** pImg, LPCTSTR lpPath);
  25. static BOOL LoadImgFromBuffer(IN Image** pImg, IN BYTE* pBuffer, IN CONST INT& nBufLen);
  26. static BOOL LoadImgFromBuffer(IN Image** pImg, LPCTSTR lpPath);
  27. static Image* LoadImgFromResource( IN HMODULE hModule, IN LPCTSTR lpName, IN LPCTSTR lpType);
  28. /* Bitmap继承于Image;
  29. static BOOL LoadImgFromFile(IN Bitmap** pImg, LPCTSTR lpPath);
  30. static BOOL LoadImgFromBuffer(IN Bitmap** pImg, IN BYTE* pBuffer, IN CONST INT& nBufLen);
  31. */
  32. //////////////////////////////////////////////////////////////////////////
  33. static BOOL GetOrientation(IN Image *pImg);
  34. static int GetEncoderClsid(IN CONST WCHAR* format, OUT CLSID* pClsid);
  35. static BOOL SaveImg2newfile(IN Image* pImg, IN CString strNewfile, IN ULONG uQuality);
  36. static BOOL SaveImg2newfile(IN Image* pImg, IN TString strNewfile, IN ULONG uQuality);
  37. static int ZoomImg(IN CRect &Imgrc, IN CONST DWORD &dwDisplayPix, OUT DWORD &dwZoomPix);
  38. static int ZoomImg(IN CONST DWORD &dwImgPix, IN CONST DWORD &dwDisplayPix, OUT DWORD &dwZoomPix);
  39. static BOOL ImgThumbnail(IN Image* pImg, IN CONST DWORD &dwDisplayPix, IN CString strNewfile, IN ULONG uQuality);
  40. static BOOL ImgThumbnail(IN LPCTSTR lpImgpath, IN CONST DWORD &dwDisplayPix, IN CString strNewfile, IN ULONG uQuality);
  41. static BOOL ImgThumbnail(IN CONST TString &strImgpath, IN CONST DWORD &dwDisplayPix, IN TString strNewfile, IN ULONG uQuality);
  42. static BOOL SimpleImgThumbnail(IN LPCTSTR lpImgpath, IN CONST DWORD &dwDisplayPix, IN CString strNewfile, IN ULONG uQuality);
  43. //////////////////////////////////////////////////////////////////////////
  44. static void CopyWithExt(IN CONST TString& strfile, IN TString& strChange, IN STR_VEC& vtExts, IN BOOL bFailIfExists);
  45. static BOOL CopyFileEx( IN TString& strExistFile, IN OUT TString& strNewFile, IN CONST DWORD& dwZoomPix, IN CONST INT& nCopyType);
  46. static TString CopyImage( IN TString &strSourceImg, IN LPCTSTR lpDestDirectory, IN CONST DWORD& dwZoomPix, IN CONST INT& nCopyType, IN CString strPerImgGoods, IN BOOL bGoodsWithName, IN LPCTSTR lpSeparator, IN BOOL bKeepbackWard, IN CONST INT &nLayers );
  47. static BOOL CopyImageEx(
  48. IN TString &strSourceImg,
  49. IN LPCTSTR lpDestDirectory,
  50. IN CONST DWORD& dwZoomPix,
  51. IN CONST INT& nCopyType,
  52. IN STR_VEC& vtWithExt,
  53. IN CString strPerImgGoods,
  54. IN BOOL bGoodsWithName,
  55. IN LPCTSTR lpCustomInfo,
  56. IN LPCTSTR lpSeparator,
  57. IN BOOL bKeepbackWard,
  58. IN CONST INT &nLayers
  59. );
  60. static BOOL CropImgToFile( IN CONST TString& strImgpath, IN TString& strCropFile, IN CRect& rcCrop);
  61. static BOOL ExportCropImageToFile(IN CONST TString& strSourceImg, IN LPCTSTR lpSaveDirectory, IN CONST INT& nExportType, IN CString strCropInfo, IN LPCTSTR lpSeparator, IN BOOL bKeepbackWard, IN CONST INT &nLayers );
  62. static BOOL AnalysisCropInfo(IN TString &strName, IN CONST TString& strSourceImg, IN LPCTSTR lpSaveDirectory, IN CString strCropInfo);
  63. // 给指定的图片加图片水印(位置、大小暂不支持);
  64. static Image* AppendImgWatermark(IN Image* pImg, IN Image* pWatemarkImg);
  65. static Image* AppendImgWatermark(IN Image* pImg, IN LPCTSTR lpWatemarkImgpath);
  66. static Image* AppendImgWatermark(IN LPCTSTR lpImgpath, IN Image* pWatemarkImg);
  67. static Image* AppendImgWatermark(IN LPCTSTR lpImgpath, IN LPCTSTR lpWatemarkImgpath);
  68. static BOOL AppendImgWatermark(IN Image* pImg, IN Image* pWatemarkImg, IN LPCTSTR lpSaveImgpath);
  69. static BOOL AppendImgWatermark(IN Image* pImg, IN LPCTSTR lpWatemarkImgpath, IN LPCTSTR lpSaveImgpath);
  70. static BOOL AppendImgWatermark(IN LPCTSTR lpImgpath, IN LPCTSTR lpWatemarkImgpath, IN LPCTSTR lpSaveImgpath);
  71. // 给指定图片加文字水印(位置、字体、颜色暂不支持);
  72. static Image* AppendWordWatermark(IN Image* pImg, IN LPCTSTR lpWatemarkString);
  73. static Image* AppendWordWatermark(IN LPCTSTR lpImgpath, IN LPCTSTR lpWatemarkString);
  74. static BOOL SaveBitmap(IN CDC *pDC, IN CBitmap* pBitmap, IN CONST INT& nBitdepth, IN const INT& nWidth, IN const INT& nHeight, IN LPCTSTR lpSavepath);
  75. static BOOL SaveBitmapEx(IN CDC *pDC, IN CBitmap* pBitmap, IN CONST INT& nBitdepth, IN const INT& nWidth, IN const INT& nHeight, IN LPCTSTR lpSavepath);
  76. static void DrawString(IN CDC* pdc, IN CONST INT& nFontSize, IN LPCTSTR lpFontName, IN LPCTSTR lpString, IN OUT CRect &rcString);
  77. //////////////////////////////////////////////////////////////////////////
  78. // 获取文件的图标;
  79. static HICON GetFileIcon(IN const CString& strFilePath, IN BOOL bLarge);
  80. };
  81. #endif