基于JPEG2000的图像编码与解码c++版


基于JPEG2000的图像编码与解码c++版
资源截图
代码片段和文件信息

#include “j2k-codec.h“

#ifdef __APPLE__

#define WORD  unsigned short
#define DWORD unsigned int
#define LONG  int

#define BI_RGB  0

#pragma pack(2)

typedef struct tagBITMAPFILEHEADER {
WORD    bfType;
DWORD   bfSize;
WORD    bfReserved1;
WORD    bfReserved2;
DWORD   bfOffBits;
} BITMAPFILEHEADER;

#pragma pack()

typedef struct tagBITMAPINFOHEADER{
DWORD      biSize;
LONG       biWidth;
LONG       biHeight;
WORD       biPlanes;
WORD       biBitCount;
DWORD      biCompression;
DWORD      biSizeImage;
LONG       biXPelsPerMeter;
LONG       biYPelsPerMeter;
DWORD      biClrUsed;
DWORD      biClrImportant;
} BITMAPINFOHEADER;

#endif


TCHAR* J2K_GetErrStr(int code)
{
static TCHAR err_str[J2K_MAX_ERROR_LEN];

J2K_GetErrorStr(code err_str);

return err_str;
}

/*/////////////////////////////////////////////////////////////////////////////////////////
// BMP Saving
/////////////////////////////////////////////////////////////////////////////////////////*/

int SaveAsBMP(char *filename J2K_Image *img)
{
int w w2 h width = img->Width height = img->Height bpp prec tmp color_map_size; FILE *f;

unsigned char   *row;
unsigned short *srow;

BITMAPFILEHEADER bmpHeader; BITMAPINFOHEADER bmpInfoHeader; 

prec = img->Precision;

if(prec > 8) bpp = img->buffer_bpp / 2; else bpp = img->buffer_bpp;

if(bpp == 2) return 0; // not supported

color_map_size = (bpp == 1 ? 256*4 : 0);

bmpHeader.bfType    = ‘MB‘;
bmpHeader.bfSize    = 14 + 40 + color_map_size; //sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
bmpHeader.bfOffBits = bmpHeader.bfSize;
bmpHeader.bfSize   += width * height * bpp;

bmpHeader.bfReserved1 = bmpHeader.bfReserved2 = 0;

bmpInfoHeader.biSize     = 40;//sizeof(BITMAPINFOHEADER); 
bmpInfoHeader.biWidth    = width;
bmpInfoHeader.biHeight   = height; 
bmpInfoHeader.biPlanes   = 1; 
bmpInfoHeader.biBitCount = (bpp == 1) ? 8 : (bpp==3 ? 24 : 32);
bmpInfoHeader.biCompression   = BI_RGB;
bmpInfoHeader.biSizeImage     = 0; 
bmpInfoHeader.biXPelsPerMeter = 0; 
bmpInfoHeader.biYPelsPerMeter = 0; 
bmpInfoHeader.biClrUsed       = (bpp==1 ? 256 : 0); 
bmpInfoHeader.biClrImportant  = 0; 

f = fopen(filename “wb“); if(!f) return 0;

// fwrite(&bmpHeader 14 1 f);
fwrite(&bmpHeader.bfType 2 1 f);
fwrite(&bmpHeader.bfSize 4 1 f);
fwrite(&bmpHeader.bfReserved1 2 1 f);
fwrite(&bmpHeader.bfReserved2 2 1 f);
fwrite(&bmpHeader.bfOffBits 4 1 f);

// fwrite(&bmpInfoHeader sizeof(BITMAPINFOHEADER) 1 f);

fwrite(&bmpInfoHeader.biSize 4 1 f);
fwrite(&bmpInfoHeader.biWidth 4 1 f);
fwrite(&bmpInfoHeader.biHeight 4 1 f);
fwrite(&bmpInfoHeader.biPlanes 2 1 f);
fwrite(&bmpInfoHeader.biBitCount 2 1 f);
fwrite(&bmpInfoHeader.biCompression 4 1 f);
fwrite(&bmpInfoHeader.biSizeImage 4 1 f);
fwrite(&bmpInfoHeader.biXPelsP

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-12-26 18:27  JPEG2000
     目录           0  2017-12-25 14:09  JPEG2000Kakadu
     文件       51712  2017-08-28 02:05  JPEG2000Kakaduconfigure_environment.exe
     文件      169472  2017-08-28 02:05  JPEG2000Kakadukdu_buffered_compress.exe
     文件      147456  2017-08-28 02:05  JPEG2000Kakadukdu_buffered_expand.exe
     文件      370688  2017-08-28 02:05  JPEG2000Kakadukdu_compress.exe
     文件      320000  2017-08-28 02:05  JPEG2000Kakadukdu_expand.exe
     文件       69632  2017-08-28 02:05  JPEG2000Kakadukdu_jp2info.exe
     文件      114688  2017-08-28 02:05  JPEG2000Kakadukdu_maketlm.exe
     文件      391680  2017-08-28 02:05  JPEG2000Kakadukdu_merge.exe
     文件      468992  2017-08-28 02:05  JPEG2000Kakadukdu_render.exe
     文件      313344  2017-08-28 02:05  JPEG2000Kakadukdu_server.exe
     文件      161280  2017-08-28 02:05  JPEG2000Kakadukdu_server_admin.exe
     文件     1145344  2017-08-28 02:05  JPEG2000Kakadukdu_show.exe
     文件      215290  2017-08-28 02:05  JPEG2000Kakadukdu_show.pdf
     文件      413696  2017-08-28 02:05  JPEG2000Kakadukdu_v_compress.exe
     文件      292352  2017-08-28 02:05  JPEG2000Kakadukdu_v_expand.exe
     文件      464384  2017-08-28 02:05  JPEG2000Kakadukdu_vcom_fast.exe
     文件        1078  2017-08-28 02:05  JPEG2000Kakadukdu_winshow.ico
     文件          54  2017-12-26 18:27  JPEG2000README.txt
     文件      178140  2017-08-28 00:49  JPEG2000Usage_Examples.txt
     目录           0  2017-12-21 09:13  JPEG2000include
     文件        4993  2012-09-08 14:39  JPEG2000includeJ2K_Codec.bas
     文件        5902  2012-09-08 14:39  JPEG2000includeJ2K_Codec.cs
     文件        5991  2012-09-08 14:40  JPEG2000includeJ2K_Codec.vb
     文件        4585  2012-09-08 15:12  JPEG2000includej2k-codec.cpp
     文件         433  2011-05-04 22:00  JPEG2000includej2k-codec.def
     文件       20828  2012-09-08 14:38  JPEG2000includej2k-codec.h
     目录           0  2017-12-21 09:13  JPEG2000lib
     文件        3131  2012-09-08 15:00  JPEG2000libj2k-dynamic-16bit.exp
     文件        5788  2012-09-08 15:00  JPEG2000libj2k-dynamic-16bit.lib
............此处省略126个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)