• 大小: 4.35MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-30
  • 语言: C/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  JPEG2000\Kakadu\
     文件       51712  2017-08-28 02:05  JPEG2000\Kakadu\configure_environment.exe
     文件      169472  2017-08-28 02:05  JPEG2000\Kakadu\kdu_buffered_compress.exe
     文件      147456  2017-08-28 02:05  JPEG2000\Kakadu\kdu_buffered_expand.exe
     文件      370688  2017-08-28 02:05  JPEG2000\Kakadu\kdu_compress.exe
     文件      320000  2017-08-28 02:05  JPEG2000\Kakadu\kdu_expand.exe
     文件       69632  2017-08-28 02:05  JPEG2000\Kakadu\kdu_jp2info.exe
     文件      114688  2017-08-28 02:05  JPEG2000\Kakadu\kdu_maketlm.exe
     文件      391680  2017-08-28 02:05  JPEG2000\Kakadu\kdu_merge.exe
     文件      468992  2017-08-28 02:05  JPEG2000\Kakadu\kdu_render.exe
     文件      313344  2017-08-28 02:05  JPEG2000\Kakadu\kdu_server.exe
     文件      161280  2017-08-28 02:05  JPEG2000\Kakadu\kdu_server_admin.exe
     文件     1145344  2017-08-28 02:05  JPEG2000\Kakadu\kdu_show.exe
     文件      215290  2017-08-28 02:05  JPEG2000\Kakadu\kdu_show.pdf
     文件      413696  2017-08-28 02:05  JPEG2000\Kakadu\kdu_v_compress.exe
     文件      292352  2017-08-28 02:05  JPEG2000\Kakadu\kdu_v_expand.exe
     文件      464384  2017-08-28 02:05  JPEG2000\Kakadu\kdu_vcom_fast.exe
     文件        1078  2017-08-28 02:05  JPEG2000\Kakadu\kdu_winshow.ico
     文件          54  2017-12-26 18:27  JPEG2000\README.txt
     文件      178140  2017-08-28 00:49  JPEG2000\Usage_Examples.txt
     目录           0  2017-12-21 09:13  JPEG2000\include\
     文件        4993  2012-09-08 14:39  JPEG2000\include\J2K_Codec.bas
     文件        5902  2012-09-08 14:39  JPEG2000\include\J2K_Codec.cs
     文件        5991  2012-09-08 14:40  JPEG2000\include\J2K_Codec.vb
     文件        4585  2012-09-08 15:12  JPEG2000\include\j2k-codec.cpp
     文件         433  2011-05-04 22:00  JPEG2000\include\j2k-codec.def
     文件       20828  2012-09-08 14:38  JPEG2000\include\j2k-codec.h
     目录           0  2017-12-21 09:13  JPEG2000\lib\
     文件        3131  2012-09-08 15:00  JPEG2000\lib\j2k-dynamic-16bit.exp
     文件        5788  2012-09-08 15:00  JPEG2000\lib\j2k-dynamic-16bit.lib
............此处省略126个文件信息

评论

共有 条评论