123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #ifndef __IMG_COMMON_20151214__
- #define __IMG_COMMON_20151214__
- #pragma once
- #include <gdiplus.h>
- using namespace Gdiplus;
- #pragma comment(lib, "gdiplus.lib")
- // <string>和<vector>命名空间最好放在stdafx.h头文件中,不然可能产生编译错误;
- #include <string>
- #include <vector>
- using namespace std;
- #ifndef _UNICODE
- typedef string TString;
- #else
- typedef wstring TString;
- #endif
- typedef vector<TString> 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
|