bmp文件扫描行的问题

bmp图像大小计算方式 首先计算图像每行字节数,直接95 * 1/8肯定是不行的,因为这没有考虑内存对齐。由于Windows在进行行扫描的时候最小的单位为4个字节,所以我们以4字节为单位计算图像的每行字节数,即width * bitCount/32,95 * 1/32 = 2(DWORD),这样算出来的结果就是以4字节为单位,windows进行行扫描的时候就不会出现扫描不到一整个4字节的情况,然而这样还是有问题的,它是一种向下取整,会损失像素信息,95 * 1%32=31,这31比特,不到4字节的信息就没被存储。所以我们要向上取整 阅读详情

(转)Windows规定一个扫描行所占的字节数必须是4的倍数,不足4的倍数则要对其进行扩充。假设图像的宽为biWidth个像素、每像素biBitCount个比特,其一个扫描行所占的真实字节数的计算公式如下:

                                              DataSizePerLine = (biWidth * biBitCount /8+ 3) / 4*4

 

那么,不压缩情况下位图数据的大小(BITMAPINFOHEADER结构中的biSizeImage成员)计算如下:

 

                                              biSizeImage = DataSizePerLine * biHeight

 

也就是说bmp扫描行所占的真实字节数一定是4的倍数,在C++中我们可以这样做预定义

 

                                              WIDTHBYTES(bits) (((bits)+31)/32*4)

                                              bits=width* bitInfoHead.biBitCount

这样就能做到了

 

BMP图像格式的补充-扫描行 <br />BMP格式还有个非常重要的规定:要求每一扫描行的字节数据必须能被4整除,也就是Dword对齐(Dword是一种数据类型,长度为4个字节)。如果图像的一行字节数不能被4整除,就需要在每行的未尾补齐0以达到规定。<br />  设图像位数为N,图像宽为W(以像素数表示),高为H(以像素数表示),扫描行字节数为L,现在我们来看一下图像的一些情况。<br />  1、图像的颜色数=2的N次方。图像位数指像素用二进制数表示时的位数。16位图像的颜色数为2的16次方=65536,这就是我们常说的6万色了。< 阅读详情

相关推荐

BMP文件的读取和保存

BMP文件结构分析和读取保存

冰雪林中著此身 2691

扫描行所占的字节数计算公式

( biWidth*biBitCount+31)/32*4               一个扫描行所占的字节数 biWidth                                                        是图像的宽度以像素为单位 biBitCount                                                   是每个像素

cocoasprite的专栏 3114

BMP文件分析及用python读取

一、BMP文件分析 1. 什么是BMP(位图)? 常见的图像文件格式有:BMP、JPG(JPE,JPEG)、GIF等。 BMP图像文件(Bitmap-File)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式。Windows 3.0以后的BMP文件都是指设备无关位图(DIB,device-independent bitmap)。BMP位图文件默...

qq_43409114的博客 2万+

bmp格式解析

位图文件(Bitmap-File,BMP)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式。Windows 3.0以前的BMP位图文件格式与显示设备有关,因此把它称为设备相关位图(device-dependent bitmap,DDB)文件格式。Windows 3.0以后的BMP位图文件格式与显示设备无关,因此把这种BMP位图文件格式称为设备无

andylauren的专栏 2740

把24位bmp位图按水平扫描和垂直扫描转为点阵数组

      本来朋友有一个移动和联通的logo点阵,现在突然需要电信的logo,所以就跟他要来了,移动和电信的logo数据,试着显示出来,其实也就是每个字节有8个点,1为显示的点,0不显示!麻烦的就是有要水平扫描和垂直扫描!      所以就写了下面的程序,这个程序是未成品,我只弄了40*40的位图,而且是24位的bmp图片,其它的只要查看一下bmp文件格式,很容易就可以修改了!(生成的数据在文件里)      有兴趣你也可以试一下!恢复样子:代码入下:#include "stdio.h" #includ

pq3online成长之路 6202

BMP 的编码与解码

bmp的解析:                  bmp的解析比较简单,参考bmp的文件格式几个正确的将bmp文件解析出来,只是要注意:每一扫描行的字节数必需是4的整倍数,也就是DWORD对齐的。如果你想确保图像的扫描行DWORD对齐可使用下面的代码:(((width*biBitCount)+31)>>5) bmp的编码:                   对于24位bmp编码难度不大,因为没有

博览不精 2314

BMP文件格式

BMP文件格式分析 简介BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitmap)

lanstar200的专栏 3557

最优化理论与自动驾驶(三):LQR原理、公式及代码演示

LQR 是基于线性系统和二次型代价函数的最优控制方法,在实际工程应用中,我们一般采用离散时间系统的LQR设计,其目标是通过设计反馈控制律,使系统在离散时间步长内稳定运行,最小化某个二次型代价函数。给定一个离散时间系统,其状态和控制输入通过以下方程表示:是时刻k的系统状态,是时刻k的控制输入,是状态转移矩阵,是输入矩阵。系统描述的物理意义:系统状态通过矩阵A演变到下一时刻,同时控制输入通过矩阵B影响系统的状态。

a8598671的博客 4595

[数据压缩] 实验二 bmp - YUV

一、实验目的 1.理解图像文件的基本组成 2.掌握结构体作为复杂数据对象的用法。进一步熟悉由问题到程序的解决方案,并掌握编程细节:如内存分配、倒序读写、字节序、文件读写过程等 二、实验原理 典型的 BMP 图像文件由四部分组成: (1)位图头文件数据结构,包含 BMP 图像文件的类型、显示内容等信息; (2)位图信息数据结构,包含有 BMP 图像的宽、高、压缩方法,以及定义颜色等信息; (3)调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24...

alexgcz的博客 1431

MSP430开发入门:手把手教你用IAR EW430从建工程到烧录调试(附F5529配置)

本文详细介绍了如何使用IAR Embedded Workbench(EW430)进行MSP430F5529开发板的嵌入式开发,从环境搭建、工程配置到硬件调试全流程。通过实战示例和关键配置技巧,帮助开发者快速掌握MSP430开发的核心要点,包括LED控制、定时器使用和低功耗优化等实用技术。

weixin_30240349的博客 392

从ABS到EBS再到AEBS:商用车制动安全系统的“三代同堂”与技术演进史

本文详细解析了商用车制动安全系统从ABS到EBS再到AEBS的技术演进历程。通过对比三代系统的性能差异和应用效果,揭示了电子控制单元(ECU)在提升制动精度和安全性的核心作用,并展望了智能制动技术的未来发展趋势。

weixin_42651748的博客 330

手把手教你用C语言在粤嵌GEC6818开发板上显示任意BMP图片(附完整代码)

本文详细介绍了如何在粤嵌GEC6818开发板上使用C语言显示任意BMP图片,包括开发环境准备、BMP文件格式解析、帧缓冲设备操作及完整代码实现。通过300行C代码,读者可以快速掌握嵌入式图形显示的核心技术,适用于教学和实际开发场景。

weixin_30514745的博客 396

别再手动调波形了!用STM32G474的HRTIM+DAC生成精密锯齿波,附完整CubeMX配置

本文详细介绍了如何利用STM32G474的高分辨率定时器(HRTIM)和数模转换器(DAC)协同工作,实现高精度锯齿波生成。通过CubeMX配置指南、关键寄存器计算和实践技巧,帮助开发者快速掌握全硬件实现的波形生成方案,显著提升嵌入式系统的波形控制精度和响应速度。

weixin_28716769的博客 246

C语言读取BMP文件

BMP图像编码 BMP即bitmap,也就是位图,一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区。 在图像数据之前,如图所示,共有54位数据 其中,0x424d在十进制为19778,对应的ASCII码为BM,表示这是个bitmap文件。 Windows的数据是倒着念的,这是PC电脑的特色。如果一段数据为42 4D,倒着念就是4D 42,即0x4D42。 因此,如果bfSize的数据为A2 1E 04 00,实际上就成了0x00041EA2,也就是0x41EA2

imxlw00的专栏 4617

【从零开始玩量化1】AKShare: Python开源财经数据接口库

文章目录量化的第一步:数据AKShare介绍AKShare安装AKShare使用AKTools安装/使用结语 量化的第一步:数据 想要玩量化,第一步要有数据,这个数据可能是历史交易数据、财务数据、宏观数据等等。我们最终要做的,无非就是从数据中分析出有价值的信息,以便用来指导投资策略。 在获取数据的这条道路上,我走了很多弯路,尝试了各种方法:使用Tushare到放弃、自己写网易股票页面的爬虫,自己写申万行业数据的爬虫、自己写同花顺问财的爬虫、使用聚宽的免费数据API等等,直到最终,我发现了AKShare。 A

量化投资助手的博客 5万+

链路聚合Eth-trunk以及华为交换机配置实例

链路聚合简介 以太网链路聚合Eth-Trunk简称链路聚合,它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。同时,这些捆绑在一起的链路通过相互间的动态备份,可以有效地提高链路的可靠性。 目的: 随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出越来越高的要求。在传统技术中,常用更换高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够灵活。 采用链路聚合技术可以在不进行硬件升级的条件下,通过将多个物理接口捆绑为一个逻辑接口

ChaseAug的博客 2万+

关于 bmp图像行对齐 问题的总结

参考链接1: https://blog.51cto.com/redwolf/229096. 参考链接2: https://blog.youkuaiyun.com/weixin_44537669/article/details/111714984. 位图中每行的像素数据都是连续的,写入(创建)和加载(读取)位图数据时以 “行” 为单位。 由于Windows在进行行扫描的时候最小的单位为4个字节,所以当 图片宽 X 每个像素的字节数 != 4的整数倍 时要在每行的后面补上缺少的字节,以0填充(一般来说当图像宽度为2的幂时不

xuechanba的博客 933

基于STM32L4XX、HAL库的RTL8201F 以太网收发器(PHY)驱动程序设计

define PHY_RESET_DELAY 1000 // PHY复位延迟(ms)#define PHY_AUTONEGO_DELAY 3000 // 自动协商延迟(ms)/* 检查PHY ID (RTL8201F的ID为0x001CC816) *//* 系统时钟配置,确保ETH有50MHz时钟 *//* 初始化CPU, AHB和APB总线时钟 */

zhusl6688的博客 813

BMP图片读写函数

BMP读函数: #include <stdio.h> #include <fcntl.h> typedef unsigned short U16; typedef unsigned long U32; #pragma pack(1) //设置1字节对齐模式,pack()将对齐模式取消 /*位图文件头*/ typedef struct BMP_FILE_HEADER ...

风口上的传奇 993

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

BMP文件编辑

BMP文件编辑 任务是用二进制编码器画两条直线,一般描述简单的任务都不会太难,前提是你会。对于小白来说,就完全相反,终点给你了,怎么走就全靠自己了,这个过程叫成长。 首先要了解什么是BMP BMP是位图格式,2种类型就不写了,网上一搜都有,我也没有太深入的去琢磨。既然任务是要自己编辑画线,先找有没有现成的,改一改,不就好了。搜了几遍,没有,大概是太简单了,大咖不屑于分享。好,那就自己了解一下,搜狗词条有解释,优快云上有位大哥,也有可能是大叔Edison_AI写了篇文章,地址是:https://blog.

weixin_49349864的博客 1856

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

BMP文件读写以及RGB与YUV转换

最近学习图像信息处理,没想到会在BMP文件的读写以及RGB与YUV转换花费这么多时间。写下这篇文章,总结一下自己的经验教训。 一、BMP文件读写 1.1 BMP文件格式 typedef struct bmp { //14字节 unsigned short bfType; //文件标识 2字节 必须为BM unsigned int bfSize; //文件大小 4字节

Ken的博客 4460

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Powerbuilder中修改格式让图片控件可以显示BMP文件

https://blog.youkuaiyun.com/supernpc/article/details/4351645 原标题:Powerbuilder中Kodak图像扫描控件应用技巧 Powerbuilder中Kodak图像扫描控件应用技巧 作者:佚名 减小字体增大字体 摘 要 Powerbuilder中对Kodak图像扫描控件应用的技巧,主要是对扫描出来的图像进行文件头修改,以保证在Powerbuilder中的正确显示和...

chengg0769 平淡无奇见真知 独立博客: http://blog.mis2erp.com 1265

BMP图片的文件结构

BMP图像文件被分成4个部分:位图文件头(Bitmap File Header)、位图信息头(Bitmap Info Header)、颜色表(Color Map)和位图数据(即图像数据,Data Bits或Data Body)。 struct tagBmpFileHeader //文件头 { unsigned short bfType; //标识该文件为bmp文件,判断文件是否为bmp文件...

海月的博客 3220

BMP文件结构分析

BMP文件结构 文档说明:由于最近的开发需要了解BMP结构,故收集并学习了BMP结构,下面部分是从网上收集来的文档,并列出部分自己的相关代码,仅供自己和他人学习。因为这段代码现在已经不用了,所以没仔细的修改,如果有时间可能会考虑重构一下。一.        Bitmap简介BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处

4258
上一篇: 开始写blog...
下一篇: 犯了一个错误...
v2_false
博客等级 码龄18年 1粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值