• 大小: 121KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: 其他
  • 标签: JPEG  

资源简介

JPEG压缩编码:实现其算法的压缩程序,帮您了解和学习图像的编码与压缩

资源截图

代码片段和文件信息

//////////////////////////////////////////////////////////////
//Name:compress.c
//Purpose: Run length algorithm and Jpeg decoding
//Author: phoenix CS TshingHua Beijing P.R.C.
//Email: bjlufengjun@www.163.net or lufengjun@hotmail.com
//Date:April 3 1998

//header file
#include “bmp.h“
#include “jpeg.h“
#include “memory.h“
#include “math.h“
#include “stdio.h“
//macro definition
#define WIDTHBYTES(i)    ((i+31)/32*4)
#define PI 3.1415926535
//define return value of function
#define FUNC_OK 0
#define FUNC_MEMORY_ERROR 1
#define FUNC_FILE_ERROR 2
#define FUNC_FORMAT_ERROR 3

//function declaration
int PASCAL WinMain (HANDLE HANDLE LPSTR int);
LRESULT CALLBACK MainWndProc(HWND  UINTWPARAM LPARAM);
BOOL LoadPcxFile(HWND hWndchar *BmpFileName);
void ReadPcxLine(unsigned char *pFILE *fp);
//////////////////////////////////////////////////
//Jpeg functions
BOOL LoadJpegFile(HWND hWndchar *BmpFileName);
void showerror(int funcret);
int  InitTag();
void InitTable();
int  Decode();
int  DecodeMCUBlock();
int  HufBlock(BYTE dchufindexBYTE achufindex);
int  DecodeElement();
void IQtIZzMCUComponent(short flag);
void IQtIZzBlock(short  *s int * dshort flag);
void GetYUV(short flag);
void StoreBuffer();
BYTE ReadByte();
void Initialize_Fast_IDCT();
void Fast_IDCT(int * block);
void idctrow(int * blk);
void idctcol(int * blk);
//////////////////////////////////////////////////
//global variable declaration
BITMAPFILEHEADER   bf;
BITMAPINFOHEADER   bi;
HPALETTE           hPalette=NULL;
HBITMAP            hBitmap=NULL;
HGLOBAL            hImgData=NULL;
DWORD              NumColors;
DWORD              LineBytes;
DWORD              ImgWidth=0  ImgHeight=0;
unsigned int       PcxBytesPerLine;
LPSTR              lpPtr;
//////////////////////////////////////////////////
//variables used in jpeg function
short SampRate_Y_HSampRate_Y_V;
short SampRate_U_HSampRate_U_V;
short SampRate_V_HSampRate_V_V;
short H_YtoUV_YtoUH_YtoVV_YtoV;
short Y_in_MCUU_in_MCUV_in_MCU;
unsigned char   *lpJpegBuf;
unsigned char   *lp;
short qt_table[3][64];
short comp_num;
BYTE comp_index[3];
BYTE     YDcIndexYAcIndexUVDcIndexUVAcIndex;
BYTE HufTabIndex;
short     *YQtTable*UQtTable*VQtTable;
BYTE And[9]={01370xf0x1f0x3f0x7f0xff};
short     code_pos_table[4][16]code_len_table[4][16];
unsigned short code_value_table[4][256];
unsigned short huf_max_value[4][16]huf_min_value[4][16];
short BitPosCurByte;
short rrunvvalue;
short MCUBuffer[10*64];
int QtZzMCUBuffer[10*64];
short BlockBuffer[64];
short ycoefucoefvcoef;
BOOL IntervalFlag;
short interval=0;
int Y[4*64]U[4*64]V[4*64];
DWORD     sizeisizej;
short  restart;
static  long iclip[1024];
static  long *iclp;
///////////////////////////////////////////////////////////
int PASCAL WinMain (HANDLE hInstance HANDLE hPrevInstance
    LPSTR lpszCmdLine int nCmdShow)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     265568  1998-05-07 10:32  行程编码,JPEG压缩编码\Bmp.aps

     文件        142  1998-04-23 13:47  行程编码,JPEG压缩编码\Bmp.h

     文件        331  1998-04-23 15:47  行程编码,JPEG压缩编码\Bmp.rc

     文件      32030  1998-04-25 09:37  行程编码,JPEG压缩编码\compress.c

     文件      43008  1998-05-06 09:20  行程编码,JPEG压缩编码\compress.exe

     文件        758  1998-04-23 14:04  行程编码,JPEG压缩编码\JPEG.H

     文件        228  2009-02-19 09:47  行程编码,JPEG压缩编码\readme.txt

     文件      13310  1995-11-22 14:50  行程编码,JPEG压缩编码\test.jpg

     目录          0  2012-05-22 10:13  行程编码,JPEG压缩编码

----------- ---------  ---------- -----  ----

               355375                    9


评论

共有 条评论