使用C++读取8位BMP位图

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

使用C++读取8位BMP位图

一、 基础知识

  1. 微软的图像库关于位图的数据结构BITMAPFILEHEADERBITMAPINFOHEADER
  2. 位图存储时候的四字节对齐
  3. 调色板的理解

二、八位图片的读取

细节见代码和注释。需要注意的是我们实际读的时候忽略了填充的字节(没必要)。


BYTE *RmwRead8BitBmpFile2Img(const char * filename,int *width,int *height){
    FILE *binFile;
    BYTE *pImg=NULL;
    BITMAPFILEHEADER fileHeader;
    BITMAPINFOHEADER bmpHeader;
    BOOL isRead=TRUE;
    int linenum,ex; //linenum:一行像素的字节总数,包括填充字节 

    //open file
    if((binFile=fopen(filename,"rb"))==NULL) return NULL;

    //read struts
    if(fread((void *)&fileHeader,1,sizeof(fileHeader),binFile)!=sizeof(fileHeader)) isRead=FALSE;
    if(fread((void *)&bmpHeader,1,
C++ C语言 读取32BMP图片转为8灰度图 BMP格式详细介绍链接:BMP格式详解BMP格式总结:① 前14字节描述文件类型,大小,数据偏移② 接着的40字节描述图片的大小,宽度,高度,深度,分辨率等等③ 深度常见的是1,4,8,24,32。其中1表示只有黑白两种颜色,4是16色,8是256色,24是RGB形式表示的,32是在24的基础上加上透明度的RGBA表示。④ 目前常见的彩色图片24或328一般为灰度图⑤ 如果是8位图(... 阅读详情

相关推荐

C++实现24bmp格式图片的读取和修饰

问题:现有一张bmp图片,要求将它读取到程序中并实现灰度化、水平翻转、模糊、棕色滤镜四种效果,如下所示: 原图 棕色滤镜效果 灰度化效果 模糊效果(不太明显) 当我第一次接触到这个问题时,是无从下手的。但在查阅了不少资料之后,整整一天,我成功地只用C++实现了打开、修饰、保存bmp文件的功能! 1.bmp文件的基本信息 (1).bmp文件的种类 打开Windows自带的画图软件,发现bmp的存储格式有好几种。 单色位图:只有黑白两种颜色,每个像素占1...

m0_62505136的博客 8244

C++读取TM数据写8BMP图像

使用C++读取TM遥感数据,并写成8BMP位图

C++读写bmp图并显示图像

C++读写bmp图并显示图像预备知识位图文件头位图信息头fopenfseekfreadSetPixel代码运行截图思路&解释注意 预备知识 位图文件头 typedef struct tagBITMAPFILEHEADER { WORD bfType; //文件类型,必须为BM(1-2字节) DWORD bfSize; //文件大小,以字节为单(3-6字节,低在前) WORD bfReserved1; //保

Friedrichor的博客 7539

C++读取保存BMP图像

C++读取保存BMP图像,包括8,24读取和保存,灰度图的转换,不使用任何已有读取、转换、保存等库函数。跨平台使用,理论上Linux与Windows上均可使用,Windows上测试成功。

c++读取8和24BMP位图数据 俺的作业

c++读取BMP位图

lllcx1108的博客 944

MFC读取8 位图并显示

之前读取256色位图文件显示到picture中发生了严重的颜色失真,查了资料才解决,代码如下。

Znpton的博客 416

【数字图像处理】<纯C++>读取、裁剪、缩放、旋转和存储8bmp灰度图像

C++实现以下功能:1、实现对硬盘中的8BMP图像的读取和存储;2、实现对指定矩形框区域图像的剪切;3、实现对任意形状图像的任意比例缩放;4、实现对任意形状图像的任意角度选装。 程序编辑环境:在visual c++6.0中建立console application工程,win32平台,无MFC,空Project 程序运行说明: 1、添加文件Ex1.cpp、Ex1.h 2、编译、运

zhengtu009的专栏 7332

C++ BYTE保存为8BMP/bitmap位图

该内容主要涉及位图文件结构以及位图存储时的四字节对齐两个重点。两个重点之后给出BYTE数组保存为8位图c++ code。 如想直接查阅代码可以跳过1、2部分,直接查看第3部分。 本文主要参照如下五个博客,将内容综合整理以备查阅。 1)位图格式分析:https://blog.csdn.net/aidem_brown/article/details/80500637 https://blog.csdn.net/qq_31094099/ar...

u013972657的博客 4732

bmp图形显示 c语言,用c语言读取并显示bmp图像1.doc

用c语言读取并显示bmp图像1如何在WIN-TC中或TC++3.0中把一张BMP格式的图片显示出来?下面的是<>随书光盘上的代码,我在TC2.0下编译通过. 它是利用了抖动技术显示了8bit和24bit的位图(也就是256色和16M色位图),应该能满足你的需要. 不过,我想问下,你老师教过抖动显示吗? #include #include #include #include #d...

weixin_28976179的博客 156

深度为8的二值图转深度为1二值图

深度为8的二值图转深度为1二值图

weixin_45118169的博客 275

c++读取bmp文件2484……

最新读取bmp的程序, 运行过成功,快快看看吧!别犹豫!

【数字图像】C++8和24BMP位图的平滑、锐化、二值化处理,以及24真彩图的灰度化

由于8和24BMP的像素存储方式不同,所以不能用相同的函数对位图进行处理,因此我设计了两个类分别处理8和24BMP。 程序运行时,首先提示输入位图深度。 然后输入位图名称。 程序会输出位图的文件头和信息头。 对于8位图,程序提示选择下列处理方式: 1.平滑处理 2.4邻域锐化 3.8邻域锐化 4.二值化 选择处理方式后,程序提示输入要保存的位图名称。然后返回是否成功处理的信息。 对于24位图,程序提示选择下列处理方式: 1.平滑处理 2

widiot的博客 8286

读取BMP文件并显示出来(C++实现)

读取BMP文件的时候我们首先需要弄清楚bmp格式文件的结构 bmp的文件格式 bmp文件包含在windows.h的头文件里。编写代码的时候可以直接调用Windows.h 头文件来调用。

wobuzhidao8的博客 4万+

C++实现24位图像素数据的BMP文件保存

BMP文件格式最显著的特征是其存储简单直观,它包含图像文件头、图像信息头、颜色表(对于索引颜色模式)和位图数据。这些部分按照顺序排列,为不同的图像处理软件提供了足够的信息来准确显示和处理图像。BMP文件有固定的结构,包括文件头、信息头、颜色表和像素数据等部分。我们可以定义结构体来表示这些信息。#pragma pack(push, 1) // 确保结构体成员按照1字节对齐// 假设已经从BMP文件中读取了fileHeader和infoHeader的数据。

weixin_31163455的博客 1227

C++实现BMP转RAW

C++实现BMP转RAW 用C++做的第一个项目,把BMP格式图片转换成RAW格式。 要实现该功能,需要分成以下几个步骤:1、搞明白BMP格式和RAW格式图片的数据存储方式;2、用C++实现算法转换,并用MFC做出一个小工具; 一、解析BMP格式 关于BMP格式网上有大把的资料,我也是参考了许多相关文章。以下是部分文章链接 https://blog.csdn.net/imxiangzi/arti...

hd328329346的博客 6593

C++读取BMP位图数据的方法

图片文件是有固定格式的,像BMP图片:文件头+位图的颜色数据。 文件头一般在读取的时候是使用下面的代码: BITMAPFILEHEADER fileheader={0}; fread(&fileheader,sizeof(fileheader),1,fp); if(fileheader.bfType!=0x4D42) // 判断是否为BMP图片 { fclose(fp); return ; } BITMAPIN

C/C++Linux、音视频、DPDK 1928

24BMP位图转换成ASCII码字符图

C++语言编程读取24*.bmp格式位图图像,并显示对应图像的ASCII字符图。

Harus 5028

C++读写BMP文件

BMP文件格式组成部分:bmp文件头(14个字节) + 位图信息头(40个字节) + 调色板(由颜色索引数决定) + 位图数据(由图像尺寸决定)位图文件头BITMAPFILEHEADER位图信息头BITMAPINFOHEADER调色板Palette(可选)实际的位图数据ImageDate第一部分为位图文件头指定文件类型,必须是0x424D,即字符串“BM”,也就是说所有.bmp文件的头两个字节都是“BM”。指定文件大小,包括这14个字节。保留字,不用考虑保留字,不用考虑。

mickey2007的博客 2871

24BMP8BMP

// 24bit28bit.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "24bit28bit.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FI

小三的学习园地 3760
上一篇: 使用postman和editthiscookies
下一篇: C++文件读写详解(ofstream,ifstream,fstream)
夜色江南
博客等级 码龄11年 5粉丝 5原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值