資源簡介
本工程已通過vc編譯運行,實現bmp圖片轉化成jpeg圖片,運用離散余弦、哈弗曼、量化等編碼過程,代碼詳細,每一行都有詳細的注釋,適合對圖像編碼的學習和研究。
………………
…………
typedef struct tagJPEGSOF0_24BITS
{
WORD segmentTag; //SOF段標記,必須為0xFFC0
WORD length; //段長度,真彩圖為17,灰度圖為11
BYTE precision; //精度,每個信號分量所用的位數,基本系統為0x08
WORD height; //圖像高度
WORD width; //圖像寬度
BYT
代碼片段和文件信息
//jenc.cpp
/*
?這是一個簡單的jpeg編碼程序,支持1:1:1采樣的baseline彩色jpeg,輸入只能是24bit的BMP文件
?代碼結構只求能說明各步驟過程,并不做特別的優化,效率較為一般。jpeg的色彩是采用YCrCb模式
?的,所以從BMP到jpeg要經過YUV的轉換。
*/
#include?“jenc.h“
//?存放VLI表
BYTE?VLI_TAB[4096];
BYTE*?pVLITAB;????????????????????????//VLI_TAB的別名使下標在-2048-2048
//?存放2個量化表
BYTE?YQT[DCTBLOCKSIZE];?
BYTE?UVQT[DCTBLOCKSIZE];?
//?存放2個FDCT變換要求格式的量化表
FLOAT?YQT_DCT[DCTBLOCKSIZE];
FLOAT?UVQT_DCT[DCTBLOCKSIZE];
//存放4個Huffman表
HUFFCODE?STD_DC_Y_HT[12];
HUFFCODE?STD_DC_UV_HT[12];
HUFFCODE?STD_AC_Y_HT[256];
HUFFCODE?STD_AC_UV_HT[256];
?//?bmFile:輸入文件
?//?jpgFile:輸出文件
?//?Q:質量
void?JEnc::Invoke(string?bmFile?string?jpgFile?long?Q)
?{
??FILE*?pFile;????????????//?輸入文件句柄
??if?((pFile?=?fopen(bmFile.c_str()“rb“))?==?NULL)???//?打開文件
??{?
???throw(“open?bmp?file?e
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-11-09?10:45??jpeg_mine\
?????文件????????5941??2004-06-30?15:33??jpeg_mine\Jpeg.h
?????文件????????4723??2004-06-30?15:09??jpeg_mine\JpegFormat.h
?????文件????????4563??2004-06-30?15:31??jpeg_mine\Jpeg_mine.dsp
?????文件?????????541??2004-06-30?14:37??jpeg_mine\Jpeg_mine.dsw
?????文件???????82944??2011-11-09?10:45??jpeg_mine\Jpeg_mine.ncb
?????文件???????49664??2011-11-09?10:45??jpeg_mine\Jpeg_mine.opt
?????文件?????????252??2011-11-09?10:01??jpeg_mine\Jpeg_mine.plg
?????文件?????3145784??2011-08-07?19:40??jpeg_mine\house.bmp
?????文件??????344161??2011-11-09?09:55??jpeg_mine\house.jpg
?????文件???????26248??2004-06-30?17:34??jpeg_mine\jenc.cpp
?????文件????????4823??2004-06-30?15:20??jpeg_mine\jenc.h
?????文件?????????925??2011-11-09?10:01??jpeg_mine\main.cpp
- 上一篇:Greenplum手冊
- 下一篇:在window是cmd下實現動態查看日志
評論
共有 條評論