資源簡介
使用C語言實現的JPEG圖形編碼,實現了從BMP位圖至JPEG格式圖像的轉化

代碼片段和文件信息
#include?
#include?
#include?
#include?“BMP.h“
//創建一個設備無關位圖結構
void?CreateDIB(DIB_Type?*DIB?BMP_Header?*image)??//?其中都是結構體??**********填寫文件頭信息*********
{
WORD?n;
DIB->width?=?image->infoHeader.biWidth;
DIB->height?=?image->infoHeader.biHeight;
DIB->bitCount?=?image->infoHeader.biBitCount; //每個像素所需的位數
n?=?DIB->width*DIB->bitCount;
if?(n%32?==?0)
DIB->bpl?=?n/8;
else???????????????????????????//DIB->bpl=提取出文件中每行的字節數
?? DIB->bpl?=?n/8+(4-(n/8)%4);//Windows規定一個掃描行所占的字節數必須是?4的倍數(即以long為單位)不足的以0填充。
if?(DIB->bitCount?<=?8)
DIB->palCount?=?1<<(DIB->bitCount); //判斷是否有調色板,并得出調色板數據的總數
else
DIB->palCount?=?0;
DIB->picSize?=?DIB->bpl*DIB->height; //得出BMP里存儲的位圖總數據,單位字節
DIB->offSet?=?image->fileHeader.bfOffBits-14;
? DIB->lpbmi?=?(LPBITMAPINFO)malloc(40+sizeof(RGBQUAD)*DIB->palCount+DIB->picSize);
? DIB->lpvbits?=?(BYTE?*)DIB->lpbmi+DIB->offSet;
? DIB->lpvbits?=?(BYTE?*)DIB->lpbmi+DIB->offSet;
?
? memcpy(DIB->lpbmi?&image->infoHeader?40);
? if?(DIB->palCount?>?0)
? {
? fseek(image->fp?14+40?SEEK_SET);
? fread((BYTE?*)DIB->lpbmi+40?sizeof(RGBQUAD)?DIB->palCount?image->fp);
}
? fseek(image->fp?14+DIB->offSet?SEEK_SET);
? fread(DIB->lpvbits?sizeof(BYTE)?DIB->picSize?image->fp);//DIB->lpvbits存儲的是位圖的所有數據
}
//刪除位圖結構
void?DeleteDIB(DIB_Type?*DIB)
{
free(DIB->lpbmi);
DIB->hDIB?=?NULL;
}
//讀入BMP文件???************調用了windows系統函數***************
int?LoadBMPHeader(BMP_Header?*image?char?*fileName)
{
image->fp?=?fopen(fileName?“rb“);
if?(image->fp?==?NULL)
return?-1;//ERR_FILE_CANT_OPEN;
fseek(image->fp?0?SEEK_SET);
fread(&(image->fileHeader)?sizeof(BITMAPFILEHEADER)?1?image->fp);
fread(&(image->infoHeader)?sizeof(BITMAPINFOHEADER)?1?image->fp);
if?(strncmp((char?*)&(image->fileHeader.bfType)?“BM“?2)?!=?0)
{
fclose(image->fp);
return?-1;//ERR_FMT_NOT_BMP
}
if?(image->infoHeader.biCompression)
{
fclose(image->fp);
return?-1;//ERR_FMT_COMPRESSION
}
return?0;
}
//關閉BMP文件
void?CloseBMPHeader(BMP_Header?*image)
{
fclose(image->fp);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5169??2010-04-07?14:23??JPEG--C\020876LvWentao.dsp
?????文件????????536??2005-06-05?16:53??JPEG--C\020876LvWentao.dsw
?????文件?????189440??2011-07-23?21:31??JPEG--C\020876LvWentao.ncb
?????文件???????1822??2010-04-10?01:22??JPEG--C\020876LvWentao.plg
?????文件????????750??2005-06-05?17:48??JPEG--C\BMP.h
?????文件???????8062??2010-04-09?23:52??JPEG--C\Coding.cpp
?????文件????????759??2010-04-08?00:05??JPEG--C\Coding.h
?????文件????????739??2005-06-05?17:46??JPEG--C\ColorSpace.h
?????文件???????1007??2005-06-05?18:11??JPEG--C\DCT.h
?????文件????????220??2005-06-05?17:17??JPEG--C\Header.h
?????文件???????5295??2010-04-09?21:14??JPEG--C\Huffman.cpp
?????文件????????987??2005-06-05?18:41??JPEG--C\Huffman.h
?????文件???????1824??2010-04-10?01:22??JPEG--C\Input.cpp
?????文件????????442??2005-06-05?18:25??JPEG--C\Input.h
?????文件????????416??2005-06-05?18:25??JPEG--C\main.cpp
?????文件??????16384??2010-04-07?14:20??JPEG--C\~VC2AD.tmp
?????文件??????????0??2010-04-07?14:20??JPEG--C\~VC2AE.tmp
?????文件???????2312??2011-07-23?15:51??JPEG--C\ColorSpace.cpp
?????文件???????2264??2011-07-23?16:04??JPEG--C\BMP.cpp
?????文件???????4518??2011-07-23?21:31??JPEG--C\DCT.cpp
?????文件??????86016??2011-07-23?21:31??JPEG--C\020876LvWentao.opt
?????文件????3138560??2010-04-10?01:22??JPEG--C\Debug\020876LvWentao.bsc
?????文件?????237721??2010-04-10?01:22??JPEG--C\Debug\020876LvWentao.exe
?????文件?????244568??2010-04-10?01:22??JPEG--C\Debug\020876LvWentao.ilk
?????文件?????205436??2010-04-10?00:47??JPEG--C\Debug\020876LvWentao.pch
?????文件?????566272??2010-04-10?01:22??JPEG--C\Debug\020876LvWentao.pdb
?????文件????1197654??2010-04-07?20:35??JPEG--C\Debug\1.bmp
?????文件????1197654??2010-04-09?23:03??JPEG--C\Debug\111.bmp
?????文件??????14948??2010-04-08?00:23??JPEG--C\Debug\BMP.obj
?????文件??????????0??2010-04-08?00:23??JPEG--C\Debug\BMP.sbr
............此處省略19個文件信息
評論
共有 條評論