资源简介
网上找到的比较常见的jpg转bmp的C语言代码(出处不详),做了小的改动,包成一个函数,可以将一个jpg文件经过解码,可以得到相应的将RGB数据和尺寸数据。
工程是用vs2013建立的。
![](http://www.nz998.com/pic/43176.jpg)
代码片段和文件信息
// JpgToBmp.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
/*
int _tmain(int argc _TCHAR* argv[])
{
return 0;
}
*/
#include
#include “jpeg.h“
#include “memory.h“
#include “math.h“
#include “stdio.h“
#include “windows.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
//////////////////////////////////////////////////
//Jpeg functions
BOOL LoadJpegFile(char *BmpFileName);
void showerror(int funcret);
int InitTag();
void InitTable();
int Decode();
int DecodeMCUBlock();
int HufBlock(unsigned char dchufindex unsigned char achufindex);
int DecodeElement();
void IQtIZzMCUComponent(short flag);
void IQtIZzBlock(short *s int * d short 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;
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_H SampRate_Y_V;
short SampRate_U_H SampRate_U_V;
short SampRate_V_H SampRate_V_V;
short H_YtoU V_YtoU H_YtoV V_YtoV;
short Y_in_MCU U_in_MCU V_in_MCU;
unsigned char *lpJpegBuf;
unsigned char *lp;
short qt_table[3][64];
short comp_num;
BYTE comp_index[3];
BYTE YDcIndex YAcIndex UVDcIndex UVAcIndex;
BYTE HufTabIndex;
short *YQtTable *UQtTable *VQtTable;
BYTE And[9] = { 0 1 3 7 0xf 0x1f 0x3f 0x7f 0xff };
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 BitPos CurByte;
short rrun vvalue;
short MCUBuffer[10 * 64];
int QtZzMCUBuffer[10 * 64];
short BlockBuffer[64];
short ycoef ucoef vcoef;
BOOL IntervalFlag;
short interval = 0;
int Y[4 * 64] U[4 * 64] V[4 * 64];
DWORD sizei sizej;
short restart;
static long iclip[1024];
static long *iclp;
////////////////////////////////////////////////////////////////
int LoadJpegFile(char *JpegFileName)
{
HFILE hfjpg;
DWORD ImgSize;
DWORD JpegBufSize;
HFILE hfbmp;
HGLOBAL hJpegBuf;
int funcret;
LPBITMAPINFOHEADER lpImgData;
if ((hfjpg = _lopen(JpegFileName OF_READ)) == HFILE_ERROR)
{
showerror(FUNC_FILE_ERROR);
return 0;
}
//get jpg file length
JpegBufSize = _llseek(hfjpg 0L SEEK_END);
//rewind to
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 758 1998-04-23 14:04 JpgToBmp\JpgToBmp\JPEG.H
文件 28491 2015-01-20 12:15 JpgToBmp\JpgToBmp\JpgToBmp.cpp
文件 4571 2015-01-20 10:01 JpgToBmp\JpgToBmp\JpgToBmp.vcxproj
文件 1401 2015-01-20 10:01 JpgToBmp\JpgToBmp\JpgToBmp.vcxproj.filters
文件 1517 2015-01-20 09:59 JpgToBmp\JpgToBmp\ReadMe.txt
文件 214 2015-01-20 09:59 JpgToBmp\JpgToBmp\stdafx.cpp
文件 234 2015-01-20 09:59 JpgToBmp\JpgToBmp\stdafx.h
文件 236 2015-01-20 09:59 JpgToBmp\JpgToBmp\targetver.h
文件 94152 2008-10-10 00:26 JpgToBmp\JpgToBmp\test.jpg
文件 970 2015-01-20 09:59 JpgToBmp\JpgToBmp.sln
..A..H. 22528 2015-01-20 12:15 JpgToBmp\JpgToBmp.v12.suo
目录 0 2015-01-20 12:15 JpgToBmp\JpgToBmp
目录 0 2015-01-20 12:15 JpgToBmp
----------- --------- ---------- ----- ----
155072 13
相关资源
- 二维码生成BMP
- Bmp图像处理.zip
- 可解码所有jpeg格式图片的开源JPEG解码
- EAN13条码生成(C语言+VS2010)[包含EA
- MFC画图板,可以画一些基本图形,如
- 基于MFC的bmp图像处理268237
- 计算BMP24位真彩色图像PSNR的C++小程序
- mfc打开并显示BMP图片
- VC打开多种图像格式bmpjpggiftifraw
- 24位BMP图像用C++实现平移、旋转、镜像
- VC6基于对话框的BMP灰度图片显示和轮
- 数字图像处理 MFC bmp格式图片打开与保
- 基于JPEG2000的图像编码与解码c++版
- DICOM图片转换BMP的C++代码
- VC实现虚拟打印机的框架源代码
- jpeg图片解码灰度二值化c语言实现
- mjpeg-streamer远程监控软件
- jpeg jpg解码 C++
- JPEG压缩的c语言实现
- [毕业分享] MFC实现数字图像处理软件
- VC++单文档视图打开bmp图片
- 在内存中将bmp转JPG
- vc++调用usb摄像头,进行拍照,保存为
- Bmp2jpeg图片格式转换
- jpg图片、png图片、24位/32位位图转25
- C语言读取BMP图像,并进行反色操作
- BMP180气压计STM32例程+51例程+数据手册
- 经典数字图像测试图灰度图,jpg,b
- 图像直方图均衡算法的实现 bmp格式
- 64位png2jpg
评论
共有 条评论