c 语言怎么清空图像,c语言 - bmp图像如何用c/c++处理?

怪我咯2017-04-17 13:11:1810楼

这么巧?

发现各种找到的库都非常巨大,抽象层次也很高,不能满足需求

自己刚写了一个C++读写bmp的类,支持8位灰度图,24位RGB图。

https://github.com/edimetia3d/simpleBMP

代码很短,其实看源码10分钟就了解干了些什么。

简要说明一下:

没有任何抽象,读取就是把bmp里的所有数据(是的,每个字节都用上了)都映射到某个定义过的变量。

保存就是把这些变量再写回磁盘。

其实最初是打算完全按照C来写的,对动态内存不太感冒,所以用了vector

读写部分用的还是fread fwrite,把vector的部分换成动态内存就完全可以在C下运行了。

每个变量的意思见

http://www.cnblogs.com/xiekeli/archive/2012/05/09/2491191.html

具体映射关系如下。

typedef struct {

unsigned short bfType;

unsigned long bfSize;

unsigned short bfReserved1;

unsigned short bfReserved2;

unsigned long bfOffBits;

} ClBitMapFileHeader;

typedef struct {

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;

} ClBitMapInfoHeader;

typedef struct {

unsigned char rgbBlue;

unsigned char rgbGreen;

unsigned char rgbRed;

unsigned char rgbReserved;

} ClrgbMap;

class ClImgBMP {

public:

ClBitMapFileHeader bmpFileHeaderData;

ClBitMapInfoHeader bmpInfoHeaderData;

ClrgbMap colorMap[256];

vector imgData;

bool LoadImage(const char* path);

bool SaveImage(const char* path);

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值