📄 jpeg2000.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 + -