#ifndef __IMG_COMMON_20151214__ #define __IMG_COMMON_20151214__ #pragma once #include using namespace Gdiplus; #pragma comment(lib, "gdiplus.lib") // 命名空间最好放在stdafx.h头文件中,不然可能产生编译错误; #include #include using namespace std; #ifndef _UNICODE typedef string TString; #else typedef wstring TString; #endif typedef vector STR_VEC; enum // 缩放结果; { ZoomNull = 0, // 无缩放; ZoomIn = 1, // 缩小; ZoomOut = 2 // 放大; }; enum { OImgtype = 1, // 原片; EImgtype = 2, // 初修; FImgtype = 3, // 精修; DImgtype = 4, // 设计; OBImgtype = 5, EBImgtype = 6, FBImgtype = 7, DBImgtype = 8 }; #define GET_XPIX(x) ( x >> 16) // 高16位; #define GET_YPIX(y) (y & 0x0000ffff) // 低16位; #define SET_PIX(x,y) (( x << 16) | y) // 高低合并; #define INVALID_COPY_PIX ((DWORD)-1) // 传递此值,表示没有复制压缩; class IMGCommon { public: IMGCommon(void); ~IMGCommon(void); static ULONG_PTR m_gdiplusToken; public: static inline int match(IN CONST TString &strExt, IN CONST TString &strfile) { int pos = strfile.find_last_of(_T('.')); if (TString::npos != pos) return !_tcsicmp(strExt.c_str(), strfile.substr(pos).c_str()); return FALSE; } static INT IsCorrectExt( IN const TString &fext, OUT TString* lpMistakenExt = NULL ); static BOOL ExtMerge( IN CONST TString& ext1, IN CONST TString& ext2, OUT TString &merge ); // 过滤非复制扩展名的文件,同时去掉缩略图,保留指定复制扩展名的文件; static CString GetFileName(IN CONST CString& strfile); static void GetFilteringImg(IN CStringArray &AryImgs, IN LPCTSTR lpCopyExt, IN BOOL bPickoutThumbnail = TRUE); static void GetFilteringImg(IN STR_VEC &vtImgs, IN LPCTSTR lpCopyExt, IN BOOL bPickoutThumbnail = TRUE); static void SubgroupExt(IN STR_VEC &vtAllImgs, IN LPCTSTR lpSubgroupExt, OUT CStringArray &AryImgs); // 分组扩展名; static void SubgroupExt(IN STR_VEC &vtAllImgs, IN LPCTSTR lpSubgroupExt, OUT STR_VEC &vtImgs); // 分组扩展名; ////////////////////////////////////////////////////////////////////////// static BOOL LoadImgFromFile(IN Image** pImg, LPCTSTR lpPath); static BOOL LoadImgFromBuffer(IN Image** pImg, IN BYTE* pBuffer, IN CONST INT& nBufLen); static BOOL LoadImgFromBuffer(IN Image** pImg, LPCTSTR lpPath); static Image* LoadImgFromResource( IN HMODULE hModule, IN LPCTSTR lpName, IN LPCTSTR lpType); /* Bitmap继承于Image; static BOOL LoadImgFromFile(IN Bitmap** pImg, LPCTSTR lpPath); static BOOL LoadImgFromBuffer(IN Bitmap** pImg, IN BYTE* pBuffer, IN CONST INT& nBufLen); */ ////////////////////////////////////////////////////////////////////////// static BOOL GetOrientation(IN Image *pImg); static int GetEncoderClsid(IN CONST WCHAR* format, OUT CLSID* pClsid); static BOOL SaveImg2newfile(IN Image* pImg, IN CString strNewfile, IN ULONG uQuality); static BOOL SaveImg2newfile(IN Image* pImg, IN TString strNewfile, IN ULONG uQuality); static int ZoomImg(IN CRect &Imgrc, IN CONST DWORD &dwDisplayPix, OUT DWORD &dwZoomPix); static int ZoomImg(IN CONST DWORD &dwImgPix, IN CONST DWORD &dwDisplayPix, OUT DWORD &dwZoomPix); static BOOL ImgThumbnail(IN Image* pImg, IN CONST DWORD &dwDisplayPix, IN CString strNewfile, IN ULONG uQuality); static BOOL ImgThumbnail(IN LPCTSTR lpImgpath, IN CONST DWORD &dwDisplayPix, IN CString strNewfile, IN ULONG uQuality); static BOOL ImgThumbnail(IN CONST TString &strImgpath, IN CONST DWORD &dwDisplayPix, IN TString strNewfile, IN ULONG uQuality); static BOOL SimpleImgThumbnail(IN LPCTSTR lpImgpath, IN CONST DWORD &dwDisplayPix, IN CString strNewfile, IN ULONG uQuality); }; #endif