#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) / 8L
//- bmiHeader.biWidth * bitCount / 8L;
int srcLine = ((srcW * bitCount +
BMP格式图像的反色和变为灰度图代码
最新推荐文章于 2022-04-15 20:01:52 发布