资源简介
使用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个文件信息
相关资源
- jpeg jpg解码 C++
- jbig二值图像压缩算法编码实现
- C++ 图像压缩算法
- 哈夫曼编码压缩文件,c/c++课程设计
- 矢量量化图像压缩编码 vs代码
- Bmp2jpeg图片格式转换
- 《单片机C语言程序设计实训100例——
- 7-ZIP源码(一款压缩软件的C++源码压缩
- sbc codec的C++实现
- C++实现视频播放器
- 点云压缩代码
- jpeg压缩纯C语言实现
- JPEG编码之DCT与量化C++
- 用哈夫曼编码压缩文件
- usart hmi串口屏 恒温睡毯可显示时间定
- 使用 zlib库 解压缩 zip文件
- 多媒体技术LZW压缩算法
- C++ GUI Qt 4编程(第二版)(中文高清
- 哈夫曼编码压缩c++版和QT5版 QT5版实现
- C语言的png和jpeg图片格式转换为bmp格式
- Visual C++实现MPEG/JPEG编解码技术代码集
- 数据结构实习 软件压缩/解压缩软件
- LBG矢量量化图像压缩 c++代码
- vs2017安装包+opencv3.4压缩包+win10环境配
- c++ 压缩文件/解压缩文件 (亲测通过
- C++实战源码-AVI文件压缩工具
- H264视频解压缩封装 c++
- JPEG图像压缩c语言算法
- 哈夫曼压缩与解压算法(可以直接运
- Visual C++ 实现 MPEG-JPEG 编解码技术.pd
评论
共有 条评论