用vc++读取jpg并取得每一点像素值(转成bmp也可以)

最好有程序,可以发到我邮箱sanmaozhucc@yahoo.cn,如果回答得好,我会给100分的加分。急用!希望牛人们帮一下忙!感激不尽!... 最好有程序,可以发到我邮箱sanmaozhucc@yahoo.cn,如果回答得好,我会给100分的加分。急用!希望牛人们帮一下忙!感激不尽! 展开
 我来答
enochwills
2010-06-01 · TA获得超过4793个赞
知道大有可为答主
回答量:2031
采纳率:96%
帮助的人:1609万
展开全部
#include <windows.h>

struct RGB {
unsigned char B;
unsigned char G;
unsigned char R;
};//end struct RGB

void dist(const char * bmpFileName)
{
BITMAPFILEHEADER fh; memset(&fh, 0, sizeof(fh));
FILE * f = fopen(bmpFileName, "rb");
if (!f) return ;
fread(&fh, 1, sizeof(fh), f);
if (fh.bfType != 0x4D42) {
fprintf(stderr, "%s不是一个BMP文件.\n");
fclose(f);
return;
}//end if
BITMAPINFOHEADER h; memset(&h, 0, sizeof(h));
fread(&h, 1, sizeof(h), f);
if (h.biCompression ) {
fprintf(stderr, "该程序无法处理压缩的BMP文件.\n");
fclose(f);
return;
}//end if
if (h.biBitCount != 24) {
fprintf(stderr, "该程序只能处理24位BMP文件\n");
fclose(f);
return ;
}//end if
//总位数为 biSizeImage/3
int bitcount = h.biSizeImage / 3; int i = 0;
//按照RGB格式分配数据
struct RGB * data = new struct RGB[bitcount];
memset(data, 0, sizeof(struct RGB) * bitcount);
fread(data, bitcount, sizeof(struct RGB), f);
fclose(f);
//这里完成了像素的读取
//用data[i]就是第i个像素的信息,以RGB三色表达像素值
//i取值范围是0 ~ bitcount,
//i可以用行列乘积求和表示,像素行列信息在h里面放置。
//使用完后释放内存空间
delete [] data;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式