作业帮 > 综合 > 作业

在VC里面怎么读取一幅图片的数据呢?具体程序怎么写?比如说JPEG图片

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/04 03:56:31
在VC里面怎么读取一幅图片的数据呢?具体程序怎么写?比如说JPEG图片
给你一个读bmp的类 ImgCenterDib 类
使用其中的 BOOL ImgCenterDib::Read(LPCTSTR lpszPathName) 函数就可以 具体的自己研究一下这个 里面有 怎么读的. 其实说vc6只能读bmp 是不对的 我也在vc6下读jpeg等格式的 如果需要我也可以贴出来
// .h文件
#ifndef _INSIDE_VISUAL_CPP_IMGCENTERDIB
#define _INSIDE_VISUAL_CPP_IMGCENTERDIB
//ImgCenterDib类,image processing center,北航图像中心编写的DIB类
//ImgCenterDib类
class ImgCenterDib
{
public:
//图像数据指针
unsigned char * m_pImgData;
//图像颜色表指针
LPRGBQUAD m_lpColorTable;
//每像素占的位数
int m_nBitCount;
//指向DIB的指针(包含BITMAPFILEHEADER,BITMAPINFOHEADER和颜色表)
LPBYTE m_lpDib;
private:
//图像信息头指针
LPBITMAPINFOHEADER m_lpBmpInfoHead;

//调色板句柄
HPALETTE m_hPalette;
//颜色表长度
int m_nColorTableLength;
public:
//不带参数的构造函数
ImgCenterDib();
//带参数的构造函数
ImgCenterDib(CSize size, int nBitCount, LPRGBQUAD lpColorTable,unsigned char *pImgData);
//析构函数
~ImgCenterDib();
//DIB读函数
BOOL Read(LPCTSTR lpszPathName);
//DIB写函数
BOOL Write(LPCTSTR lpszPathName);
//DIB显示函数
BOOL Draw(CDC* pDC, CPoint origin, CSize size);
//逻辑调色板生成函数
void MakePalette();
//获取DIB的尺寸(宽高)
CSize GetDimensions();
//清理空间
void Empty();
//用新的数据替换当前DIB
void ReplaceDib(CSize size, int nBitCount, LPRGBQUAD lpColorTable,
unsigned char *pImgData);
//计算颜色表的长度
int ComputeColorTabalLength(int nBitCount);
protected:
//图像的宽,像素为单位
int m_imgWidth;
//图像的高,像素为单位
int m_imgHeight;

};
#endif // _INSIDE_VISUAL_CPP_IMGCENTERDIB
//////////////////////////////////////////////////////////
//cpp文件
#include "stdafx.h"
#include "ImageCenterDib.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//
CSize ImgCenterDib::GetDimensions()
{
if(m_lpDib == NULL) return CSize(0, 0);
return CSize(m_imgWidth, m_imgHeight);
}