位置: 编程技术 - 正文

详解Linux下读取位图的注意事项(linux读出文件)

编辑:rootadmin

推荐整理分享详解Linux下读取位图的注意事项(linux读出文件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux获取读写权限,linux中读取文件内容,linux读文件用什么命令,linux读取文本的命令并执行,linux 读取,linux如何读,linux读出文件,linux中读取文件内容,内容如对您有帮助,希望把文章链接给更多的朋友!

详解Linux下读取位图的注意事项

在Linux下读取位图遇到的问题,很好地体现了linux与Windows操作系统的不同。按理说位图格式与操作系统无关,读取也应该无关,实际上在位图读到内存中时已经不同。下面主要介绍自己在Linux下操作位图遇到的问题。

(一)、位图结构

位图一开始是两个结构体,包括位图的详细信息,是读取后面数据的关键。所以读取位图首先要正确读取这两个结构体:BITMAPFILEHEADER和BITMAPINFOHEADER。其具体定义为:

上面两个结构是Windows下可以正常使用的。但是Linux下没有WORD、DWORD之类的变量类型,所以我们需要将这些变量映射到Linux下的常用变量类型:

上述映射要特别注意每个类型的字节数。不同的操作系统变量的长度不同,我们在定义时首先需要用sizeof获得本机器的变量类型长度,然后再根据位图每个属性长度去选择合适的变量类型。在此第三个变量LONG在windows下是四个字节,但是在Linux下是八个字节,所以我们需要用int来代替LONG。

详解Linux下读取位图的注意事项(linux读出文件)

(二)、对齐

在位图结构的定义中,我们在结构体名称前面添加了语句__attribute__ ((packed))。__attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。在windows下,读取操作不会优化,按照结构体实际的大小去读取,但是在Linux下,为了加快访存速度,会启用访存的对齐操作。这时读到内存中的结构体大小就大于最初的定义,此时如果按照之前的大小去访问位图属性,将读到错误的数值。为了使访问方便,我们需要禁止对齐优化。

(三)、位图数据

对于位真彩色位图,位图不包括调色板,位图数据就是RGB颜色的值。所以很多人认为数据的大小就是3*height*width,读取数据的时候直接利用这个大小,但这是错误的。位真彩色位图每一行还需要满足一个条件:数据长度能被4整除,否则需要用0补齐到能被4整除。所以读取的过程需要一行一行完成,而且在每一行的末尾,我们都需要跳过一定数量的0,这个计算公式如下:

C语言下,读取过程如下:

(四)、RGB顺序

如前所述,位真彩色位图不包括调色板,位图数据就是RGB颜色的值,每个颜色占据一个字节。此时很多人认为颜色的顺序是R、G、B,但这也是错误的,实际的顺序应该是B、G、R。这一点也需要特别注意。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

linux创建PHP定时任务的实例 linux创建PHP定时任务下面所有的前提是服务器存在PHP环境首先创建一个php文件:示例内容如下:php$ch=curl_init();//设置请求curl_setopt($ch,CURLOPT_URL,"写上要请

Linux消息队列实现进程间通信实例详解 Linux消息队列实现进程间通信实例详解一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含

Linux共享内存实现机制的详解 Linux共享内存实现机制的详解内存共享:两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看

标签: linux读出文件

本文链接地址:https://www.jiuchutong.com/biancheng/378221.html 转载请保留说明!

上一篇:Linux 中fork的执行的实例详解(linux中fork()函数详解(原创!!实例讲解))

下一篇:linux创建PHP定时任务的实例(linux搭建php运行环境)

  • 累计折旧 计提折旧
  • 建筑业小规模纳税人预缴增值税
  • 固定资产可以一次性摊销吗
  • 房屋产权出典的由承典人作为房产税纳税义务人
  • 技术服务费怎么结转成本
  • 普通增值税发票税号
  • 本月进项留抵会计分录
  • 有哪些税收政策类型
  • 租房所得税是怎么处理
  • 销售货物尚未收到会计分录
  • 建筑劳务公司的工资计入什么科目
  • 应收账款增值税专用发票
  • 0退税产品怎么征税
  • 行政事业单位结算起点
  • 地产公司代办房产证
  • 金税三期收回长期投资所得税如何申报?
  • 处于汇总期
  • 个人交社保可以交生育险吗
  • 天猫技术服务费什么时候返还
  • 职工教育经费的扣除限额
  • 总成本费用包含
  • 贷款贴息是什么政策
  • 教育培训行业收入
  • 一般纳税人销售二手车增值税税率
  • 企业增值税征收范围包括
  • redis在php项目中的使用实例
  • 公司购买自己公司的产品
  • 直接人工的核算包括
  • 其他综合收益是什么意思
  • directx安全吗
  • 商品房的维修金该怎么交
  • pdf.js原理
  • node-gyp版本
  • php处理并发有哪些技术
  • 客户要回扣
  • centos-6.5-i386-bin-dvd1.iso
  • 民办非盈利组织税收政策
  • php递归算法1加到100
  • tls版本过低怎么办
  • vue中用echarts
  • web前端三大主流框架vue
  • 已认证的发票
  • 临过期产品
  • 运营级别划分
  • mongodb 入门
  • pythonzen
  • 其他资本公积主要包括
  • 家具厂成本
  • 公司代房东缴纳个税怎么处理
  • 国地税合并对个人带来的影响
  • 公司应付款是什么意思
  • 扫描仪有危害吗
  • 电子商务交易类应用发展现状
  • 微信提现手续费1000扣多少
  • 公司购买防疫物资的申请
  • 认缴的注册资金怎么做账
  • 暂估商品会计分录
  • 投资性房地产处置的账务处理
  • 个体户银行开户所需资料
  • 工程分包总包产生的 税费由谁承担
  • 原始凭证的审核和填制
  • 应付账款怎么记账
  • linux vim
  • 如何把itunes的音乐导入ipod
  • centos7怎么配置
  • win7win8win10哪个流畅
  • windows10 天气
  • Win7如何安装音频设备
  • 解决胃胀气最快方法
  • javascript教程chm
  • activity生命周期的方法
  • PreferenceActivity、PreferenceFragment使用
  • 有没有改善
  • js拖拽效果
  • 深入理解python递归
  • android遇到的难题,怎么解决的
  • android studio 运行配置
  • android简单项目及代码
  • 江苏省国家税务总局电子税务局
  • 成都租房备案凭证怎么办理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设