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

📄 jpeg2000.h

📁 基于小波变换的零树编码对静止图像进行压缩与解压
💻 H
字号:

#ifndef JPEG2000_H
#define JPEG2000_H





typedef int   (* FUNC_ENCODE)(BYTE * pByte,int _nW,int _nH,int _level,int threshold,char * & _codeStream,int & _codeLength);

typedef int   (* FUNC_DECODE)(BYTE * pByte,int _nW,int _nH,int _level,int threshold,char * & _codeStream,int &  _codeLength);



int ToJPEG20000(char * bmpfile)
{

//------------------load Function

	HINSTANCE m_hInst = LoadLibrary("ToolsDll.dll");	
	
	if(!m_hInst) 
	{
		::MessageBox(NULL,"Cann't load library","ANN_BP",0); 
	}	
			
	FUNC_ENCODE EZW  =  (FUNC_ENCODE)GetProcAddress(m_hInst, "EZW_Encode");
	FUNC_DECODE IEZW  = (FUNC_DECODE)GetProcAddress(m_hInst, "EZW_Decode");

	if( (!EZW) || (!IEZW)  ) 
	{
		::MessageBox(NULL,"Cann't load library","ANN_BP",0); 
	}





//*///-----------------read bmp file

	BITMAP bm;
	CBitmap bitmap;	   
	
	HBITMAP hbitmap =(HBITMAP)::LoadImage(NULL,bmpfile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
	
	if(hbitmap==NULL) 	return 0;

	
	bitmap.DeleteObject();     
	bitmap.Attach(hbitmap);   	
	bitmap.GetObject(sizeof(BITMAP),&bm);		

	int nL =bm.bmWidthBytes;	

	int nW=bm.bmWidth;
	int nH=bm.bmHeight;	
	
	if(24!=bm.bmBitsPixel) return 0; //not RGB format

	BYTE * pByte=(BYTE *)malloc( nL* nH);

	DWORD bitmapSize=nH * nL ;

	bitmap.GetBitmapBits(bitmapSize, pByte  );

	bitmap.DeleteObject();
	



//-----------------不做量化,几乎无损压缩的 Wavelet Transform And EZW Coding 变换----

	char * codeStream;
	int length;
	int level=5;

	//正变换
	EZW(pByte,nW,nH,level,128,codeStream,length);	

	//逆变换
	IEZW(pByte,nW,nH,level,128,codeStream,length);	



	free(codeStream);

	free(pByte);


	FreeLibrary(m_hInst);


	return 1;


}



#endif

⌨️ 快捷键说明

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