C语言简单实现仿射转换BMP位图,读入位图,仿射转换,并生成保存转换的图片

 

 

 

#include <stdio.h>
#include <malloc.h>
#include <math.h>
#include <windows.h>
#define BM 19778// 位图的标志
//打开的文件路径 
#define ORIGIN_BMP_PATH "D:\\ubuntuShare\\test\\仿射图像\\灰度图处理\\原始.bmp"
//处理之后的图像
#define PROCESS_BMP_PATH "D:\\ubuntuShare\\test\\仿射图像\\灰度图处理\\处理后.bmp"

//构建BMP位图文件头
typedef struct tagBMPFILEHEADER  
{ // bmfh  
	unsigned short    bfType;  
	unsigned long   bfSize;  
	unsigned short    bfReserved1;  
	unsigned short    bfReserved2;  
	unsigned long   bfOffBits;  
}__attribute__((packed))BMPFILEHEADER;

//构建BMP位图信息头
typedef struct tagBMPINFOHEADER  
{ // bmih  
	unsigned long  biSize;  
	long   biWidth;  
	long   biHeight;  
	unsigned short   biPlanes;  
	unsigned short   biBitCount;  
	unsigned long  biCompression;  
	unsigned long  biSizeImage;  
	long   biXPelsPerMeter;  
	long   biYPelsPerMeter;  
	unsigned long  biClrUsed;  
	unsigned long  biClrImportant;  
}__attribute__((packed))BMPINFOHEADER;

//判断是否是位图,在0-1字节 
int IsBitMap(FILE *fp)
{
	unsigned short s;
	fread(&s,1,2,fp);
	printf("读取位图格式为:%x\n",s);
	if(s == BM)
		return 1;
	else
		return 0;
}
 
//获得图片的宽度,在18-21字节 
long getWidth(FILE *fp)
{
	long width;
	fs
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值