使用C语言操作bitmap(彩色变灰色,黑白)

本文介绍了如何使用C语言将24位彩色bitmap图像转换为灰度和黑白图像。通过定义BITMAPFILEHEADER和BITMAPINFOHEADER结构体获取图像信息,读取像素RGB值到数组,然后应用灰度转换和黑白转换算法,最后将处理后的图像写入文件。文章附带了原图、灰度图和黑白图的效果展示。
摘要由CSDN通过智能技术生成

这里有有一篇bitmap基本格式的博客,不再赘述
https://www.cnblogs.com/ZXNblog/p/4046342.html
下面讲述怎么将24为的bitmap图像变成灰色和黑白。

  1. 定义BITMAPFILEHEADER,和BITMAPINFOHEADER,并从原图像获取图像信息

        typedef unsigned char uc;
        BITMAPFILEHEADER fileHeader;//在windows.h文件中有定义 
        BITMAPINFOHEADER infoHeader;//同上 
    
        FILE* f=fopen("1.bmp","rb");
        FILE* f2=fopen("4.bmp","wb");
        fread(&fileHeader,sizeof(BITMAPFILEHEADER),1,f);
        fread(&infoHeader,sizeof(BITMAPINFOHEADER),1,f);
        int height,width;
        width=infoHeader.biWidth;
        height=infoHeader.biHeight;
        uc* r=(uc*)malloc(width*height);//红色矩阵 
        uc* g=(uc*)malloc(width*height);//绿色矩阵 
        uc* b=(uc*)malloc(width*height);//蓝色矩阵 
    
  2. 将图像每个像素的rgb颜色读取到数组中

    void loadImage(FILE* fin,uc* r,uc* g,uc *b,int height,int width){
        //fin文件指针已经过
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值