#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <math.h>
#include <stdlib.h>
int InvertImage(char *srcImage, char *destIMage, int iFlag)
{
BITMAPFILEHEADER bmfHeader;
BITMAPINFOHEADER bmiHeader;
int i;
FILE *pFile;
if ((pFile = fopen(srcImage, "rb")) == NULL)
{
printf("open bmp file error.");
exit(-1);
}
//读取文件和Bitmap头信息
fseek(pFile,0,SEEK_SET);
fread(&bmfHeader,sizeof(BITMAPFILEHEADER),1,pFile);
fread(&bmiHeader,sizeof(BITMAPINFOHEADER),1,pFile);
//先不支持小于16位的位图
int bitCount = bmiHeader.biBitCount;
if (bitCount < 16)
{
printf("Image format is error!");
exit(-1);
}
int srcW = bmiHeader.biWidth;//宽度,多少像素点
int srcH = bmiHeader.biHeight;//高度
int lineSize = bitCount * srcW / 8;
//偏移量,windows系统要求每个扫描行按四字节对齐
//int alignBytes = ((bmiHeader.biWidth * bitCount + 31) & ~31
BMP格式图像的反色和变为灰度图代码
最新推荐文章于 2021-06-21 16:59:02 发布
这是一个C++代码示例,用于读取BMP格式的图像文件并进行反色或灰度转换。通过读取图像数据,根据像素位深度进行操作,然后将处理后的数据写回新的BMP文件。代码适用于Windows系统,但在Linux下运行需要调整头文件和文件I/O部分。
摘要由CSDN通过智能技术生成