/*
Auto folder version [1]
Name [bmp.cpp]
Branch [通用图像处理]
File type [cpp]
Direction [bmp文件相关操作]
*/
#include "stdafx.h"
//注:原点在左下角
//读图像的位图数据、宽、高及每像素位数等数据进内存,存放在相应的变量中
bool readBmp(const char *bmpName, BMPOBJ &bmpobj)
{
FILE *fp;
fopen_s(&fp,bmpName, "rb");//二进制读方式打开指定的图像文件
if (fp == 0) return false;
fseek(fp, sizeof(BITMAPFILEHEADER), 0);//跳过位图文件头结构BITMAPFILEHEADER
BITMAPINFOHEADER head; //位图信息结构体变量
fread(&head, sizeof(BITMAPINFOHEADER), 1, fp); //获取图像宽、高、每像素所占位数等信息
bmpobj.width = head.biWidth;
bmpobj.height = head.biHeight;
bmpobj.biBitCount = head.biBitCount;
//定义变量,计算图像每行像素所占的字节数(必须是4的倍数)
int lineByte = (bmpobj.width * bmpobj.biBitCount / 8 + 3) / 4 * 4; //注意这里一行四字节对齐
bmpobj.lineByte = lineByte;
bmpobj.data = new unsigned char[bmpobj.lineByte * bmpobj.height]; //分配内存
fread(bmpobj.data, 1, bmpobj.lineByte * bmpobj.height, fp);/
BMP文件操作
最新推荐文章于 2022-04-17 17:46:59 发布
该代码实现了一套BMP文件的读写和操作功能,包括读取图像的位图数据、宽、高及每像素位数,保存BMP图像,创建空白BMP图像,全色填充,设置和获取像素点,以及填充矩形和边框。
摘要由CSDN通过智能技术生成