文档章节

Bitmap 位图文件 编码/解码 --C语言实现

t
 tigerBin
发布于 2017/07/01 19:58
字数 340
阅读 67
收藏 0
点赞 0
评论 0

Source Code :  https://git.oschina.net/SilentCode/BitmapCoDecoders

仅以 24为真彩色Window Bitmap 文件格式为参考,不支持 OS/2格式的位图文件

大部分24位图文件包含54个字节的文件头信息,且大部分字段相同,不同的地方只有 三个字段共12个字节

offset 从文件头开始的偏移量,hex(十六进制), dec(十进制)

Offset hex Offset dec Size(字段长度) Purpose(用途)
0x02 2 4 bytes 文件的总字节数
0x12 18 4 bytes 图像的宽度(Width)
0x16 22 4 bytes 图像的高度(Height)

 

Bitmap文件采用小端字节序的方式存储头部信息,也就是说,如果读取到的宽度是 00 00 01 00 四个连续的字节,那么实际的宽带是 00 01 00 00 = 0x00010000

数据部分按照从左到右,从下到上的顺序排列,详情请参考:

 https://my.oschina.net/tigerBin/blog/919744

https://en.wikipedia.org/wiki/BMP_file_format

 

BmpDecoder.h 位图文件解码部分

直接调用OpenImage打开文件,读取位图数据,返回结果是按照 BGR的顺序存放的

 

BmpEncoder.h 文图文件编码部分

直接调用Encoder将 BGR顺序的位图数据编码为Bitmap格式的数据流

调用Write函数保存文件数据

 

main.cpp 运行示例

g++ main.cpp -o main
main demo.bmp out.bmp

demo.bmp

out.bmp

© 著作权归作者所有

共有 人打赏支持
t
粉丝 0
博文 61
码字总数 16992
作品 0
武汉
程序员
Android图形处理之Bitmap

Bitmap是Android系统中的图像处理的最重要类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件。本文从应用的角度,着重介绍怎么用Bitmap来实现...

等待流星 ⋅ 2014/11/17 ⋅ 0

Android解决大图片内存溢出

在Android平台上内存溢出是一件很头疼的事情,但解决办法还是有的,今天来翻译一篇谷歌官方提供的解决方案,原文可以参见:http://developer.android.com/training/displaying-bitmaps/load-bi...

hhs ⋅ 2012/08/28 ⋅ 0

NIOS2随笔——BMP解码与VGA显示

1. 系统概述 本设计采用NIOS2 32位处理器,通过SPI接口将SD/TF卡中的BMP图片数据读取到内存中,SD/TF卡的文件系统为FAT32,NIOS2软件实现BMP解码后,启动framereader和Clocked Video Output模...

shugenyin ⋅ 2016/12/30 ⋅ 0

WCF技术剖析之十九:深度剖析消息编码(Encoding)实现(下篇)

[爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道《天天山海经》为此录制的节目视频(苏州话)]]通过上篇的介绍,我们知道了WCF所有与编码与解码相关的功能都实现在相应...

长平狐 ⋅ 2012/09/04 ⋅ 0

CxImage的几种应用举例

下面介绍应用它进行图像类型转换的方式: 1.从一种图像文件类型转换为另一种文件类型(convert from a format to another) CxImage image; // 定义一个CxImage对象 // 从bmp文件转换为jpg文件...

ryany ⋅ 2011/02/10 ⋅ 0

Javascript的bitmap处理库--jsBitmap

基于Javascript的bitmap处理,并且将位图输出为base64编码以便于浏览器进行显示。 一、Bitmap.create(width, height, bgcolor) 创建一个width x height像素大小的位图,底色为bgcolor所代表的...

matrixy ⋅ 2013/08/26 ⋅ 1

Android图片加载库Glide和Fresco是如何工作的

原文地址:https://blog.mindorks.com/how-the-android-image-loading-library-glide-and-fresco-works-962bc9d1cc40 通常,我们在加载图片的时候经常会遇到如下的问题: 内存溢出错误 图片加...

尺锤 ⋅ 2017/09/16 ⋅ 0

【Google官方教程】第一课:高效地加载大Bitmap(位图)

转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-) http://my.oschina.net/ryanhoo/blog/88242 译者:Ryan Hoo 来源:https://developer.andro...

RyanHoo ⋅ 2012/11/09 ⋅ 30

Android Bitmap和Canvas学习笔记

位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最有吸引力的。 1. 从资源中获取位图 可以使用BitmapDrawable或者BitmapFactory来获取资源中的位图。 当然,首先需要获取资源: ...

迷途d书童 ⋅ 2012/03/05 ⋅ 0

Android Bitmap和Canvas

位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最有吸引力的。 1. 从资源中获取位图 可以使用BitmapDrawable或者BitmapFactory来获取资源中的位图。 当然,首先需要获取资源: ...

黑菜妞妞 ⋅ 2011/07/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 13分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 16分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 25分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 58分钟前 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部