VC++ 判断内存中的图像数据
高手,请给我写段代码吧(VC++win32),要求:1.读取一张名为“photo.bmp”的位图(800×600,黑白的)到内存,但不要显示出来;2.依次判断每一个点的颜...
高手,请给我写段代码吧(VC++ win32),要求:
1.读取一张名为“photo.bmp”的位图(800×600,黑白的)到内存,但不要显示出来;
2.依次判断每一个点的颜色(黑还是白),赋值给point[800][600]的数组。
我过去用过Getpixel(),这个函数要显示出图像后才能判断像素,而且速度很慢,判断800×600个像素程序总是没响应(windows任务管理器中可以看到)。
于是我想,在内存中判断应该会快点。
会的大侠帮帮忙啊!
我已经问了相似的问题好几个月了,就是没人回答……如果代码能用,我追加100分! 展开
1.读取一张名为“photo.bmp”的位图(800×600,黑白的)到内存,但不要显示出来;
2.依次判断每一个点的颜色(黑还是白),赋值给point[800][600]的数组。
我过去用过Getpixel(),这个函数要显示出图像后才能判断像素,而且速度很慢,判断800×600个像素程序总是没响应(windows任务管理器中可以看到)。
于是我想,在内存中判断应该会快点。
会的大侠帮帮忙啊!
我已经问了相似的问题好几个月了,就是没人回答……如果代码能用,我追加100分! 展开
1个回答
展开全部
建议直接对bmp文件读取分析,具体看msdn吧
bmp文件格式:包含以下4个部分
BITMAPFILEHEADER 文件头
BITMAPINFOHEADER 图像信息
RGBQUAD 调色板,比如256色位图就是256个RGBQUAD
COLOR-index 具体像素,比如256色位图就是上面调色板的索引
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD;
我qq 1454247
bmp文件格式:包含以下4个部分
BITMAPFILEHEADER 文件头
BITMAPINFOHEADER 图像信息
RGBQUAD 调色板,比如256色位图就是256个RGBQUAD
COLOR-index 具体像素,比如256色位图就是上面调色板的索引
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD;
我qq 1454247
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询