⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resample.h

📁 M8手机图片查看器
💻 H
字号:
/*
                             Resample

	Carlo Pallini, Dec. 2007 

	This DLL exports the following two functions that allows quality resampling of true color bitmaps
	(1) CreateResampledBitmap
  (2) CreateUserFilterResampledBitmap  
	Function (1) Creates a resampled bitmap (HBITMAP) given the original one , the new dimensions
	and the choosen filter (13 'default' filters are provided) (a HDC is needed too).
	Functon (2) accepts  a custom filter (a function pointer) and related radius to perform a similar
	task.
	In both cases, the new HBITMAP is returned on success (NULL on failure). When such a HBITMAP is
	no longer need,  call DeleteObject on it.


 * AKNOWLEDGMENTS:
  
	This work is based on the Libor Tinka's article "Image Resizing - outperform GDI+" that
	may be found at CodeProject:
  http://www.codeproject.com/KB/GDI-plus/imgresizoutperfgdiplus.aspx
	I've ported his original algo to 100% pure unmanaged C code.
	There are some modification and the resulting code (thought not optimized)
	is a bit faster than the original one.
	
	Dec. 17th 2007
*/



/*
	The following ifdef block is the standard way of creating macros which make exporting 
  from a DLL simpler. All files within this DLL are compiled with the RESAMPLE_EXPORTS
  symbol defined on the command line. this symbol should not be defined on any project
  that uses this DLL. This way any other project whose source files include this file see 
  RESAMPLE_API functions as being imported from a DLL, whereas this DLL sees symbols
  defined with this macro as being exported.
*/

/*#ifdef RESAMPLE_EXPORTS
#define RESAMPLE_API __declspec(dllexport)
#else
#define RESAMPLE_API __declspec(dllimport)
#endif*/
#define RESAMPLE_API 


/* Stock (i.e. already defined) filters */
#define STOCK_FILTER_BELL								0x00000000
#define STOCK_FILTER_BOX								0x00000001
#define STOCK_FILTER_CATMULLROM         0x00000002
#define STOCK_FILTER_COSINE             0x00000003
#define STOCK_FILTER_CUBICCONVOLUTION   0x00000004
#define STOCK_FILTER_CUBICSPLINE        0x00000005
#define STOCK_FILTER_HERMITE						0x00000006					
#define STOCK_FILTER_LANCZOS3						0x00000007
#define STOCK_FILTER_LANCZOS8						0x00000008
#define STOCK_FILTER_MITCHELL           0x00000009
#define STOCK_FILTER_QUADRATIC          0x0000000A
#define STOCK_FILTER_QUADRATICBSPLINE   0x0000000B
#define STOCK_FILTER_TRIANGLE						0x0000000C

#define STOCK_FILTERS                   0x0000000D


/* Errors */
#define E_INVALID_BITMAP                0x20000001
#define E_INVALID_BITMAP_DATA           0x20000002
#define E_UNABLE_TO_LOAD_BITMAP_BITS		0x20000003
#define E_UNABLE_TO_CREATE_BITMAP				0x20000004
#define	E_INVALID_OUT_BITMAP_DATA				0x20000005
#define E_MEMORY_ERROR									0x20000006
#define E_RESAMPLE_ERROR                0x20000007
#define E_UNABLE_TO_SET_BITMAP          0x20000008
#define E_UNABLE_TO_SET_FILTER          0x20000009

/* The following block allows compilation with both C++ and C code */
#ifdef __cplusplus
extern "C"
{
#endif
RESAMPLE_API HBITMAP CreateResampledBitmap(HDC hdc, HBITMAP hBmpSource, DWORD dwWidth, DWORD dwHeight, DWORD dwFilter);
BOOL ShrinkRGB32(LPBYTE source, int srcwidth, int srcheight, LPBYTE destion, int destwidth, int destheight, unsigned filter);
RESAMPLE_API HBITMAP CreateUserFilterResampledBitmap(HDC hdc, HBITMAP hBmpSource, DWORD dwWidth, DWORD dwHeight, double (*CustomFilterFunc)(double), double dRadius);
#ifdef __cplusplus
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -