BMP文件头定义:

WORD 两个字节 16bit

DWORD 四个字节 32bit

package main

import (
"encoding/binary"
"fmt"
"os"
) func main() {
file, err := os.Open("tim.bmp")
if err != nil {
fmt.Println(err)
return
} defer file.Close() //type拆成两个byte来读
var headA, headB byte
//Read第二个参数字节序一般windows/linux大部分都是LittleEndian,苹果系统用BigEndian
binary.Read(file, binary.LittleEndian, &headA)
binary.Read(file, binary.LittleEndian, &headB) //文件大小
var size uint32
binary.Read(file, binary.LittleEndian, &size) //预留字节
var reservedA, reservedB uint16
binary.Read(file, binary.LittleEndian, &reservedA)
binary.Read(file, binary.LittleEndian, &reservedB) //偏移字节
var offbits uint32
binary.Read(file, binary.LittleEndian, &offbits) fmt.Println(headA, headB, size, reservedA, reservedB, offbits) }

  执行结果

66 77 196662 0 0 54

使用结构体方式

package main

import (
"encoding/binary"
"fmt"
"os"
) type BitmapInfoHeader struct {
Size uint32
Width int32
Height int32
Places uint16
BitCount uint16
Compression uint32
SizeImage uint32
XperlsPerMeter int32
YperlsPerMeter int32
ClsrUsed uint32
ClrImportant uint32
} func main() {
file, err := os.Open("tim.bmp")
if err != nil {
fmt.Println(err)
return
} defer file.Close() //type拆成两个byte来读
var headA, headB byte
//Read第二个参数字节序一般windows/linux大部分都是LittleEndian,苹果系统用BigEndian
binary.Read(file, binary.LittleEndian, &headA)
binary.Read(file, binary.LittleEndian, &headB) //文件大小
var size uint32
binary.Read(file, binary.LittleEndian, &size) //预留字节
var reservedA, reservedB uint16
binary.Read(file, binary.LittleEndian, &reservedA)
binary.Read(file, binary.LittleEndian, &reservedB) //偏移字节
var offbits uint32
binary.Read(file, binary.LittleEndian, &offbits) fmt.Println(headA, headB, size, reservedA, reservedB, offbits) infoHeader := new(BitmapInfoHeader)
binary.Read(file, binary.LittleEndian, infoHeader)
fmt.Println(infoHeader) }

  执行结果:

66 77 196662 0 0 54

&{40 256 256 1 24 0 196608 3100 3100 0 0}

go 读取BMP文件头二进制读取的更多相关文章

  1. 在linux下读取bmp文件头的完整代码。

    呵呵,贴在这里记录一下. [cpp] view plaincopy #include<stdio.h> #include<string.h> #include<sys/t ...

  2. DCMTK读取DICOM文件头信息的三种方法

    Howto: Load File Meta-Header Here's an example that shows how to load the File Meta Information Head ...

  3. WinCE的C#中使用StreamReader 来读取TXT文档,读取文本文档。

    using System.IO; private void button1_Click(object sender, EventArgs e) { string strFilePath = " ...

  4. 读取bmp图片数据

    public void getBMPImage(String source) throws Exception { clearNData(); //清除数据保存区 FileInputStream fs ...

  5. bmp格式图片文件读取

    C++读取bmp图片 #include <windows.h> #include <stdio.h> #include <stdlib.h> #include &l ...

  6. Linux下BMP文件不能正常读取问题的解决办法

    今天将之前在win下编好的读取BMP图像功能移植到UNIX下. 碰到的第一个问题是,Linux下的BMP文件头的结构体需要自己重新定义一遍. 第二个问题是,需要搞清楚Linux是32位的还是64位的. ...

  7. bmp图片格式及读取

    C++读取bmp图片的例子 #include <windows.h> #include <stdio.h> #include <stdlib.h> #include ...

  8. 我与python3擦肩而过(二)—— csv文件头哪去啦?

    在看Python Data Visualization Cookbook 这本书(基于python2),开始时读取csv文件头的时候出现问题.查了资料,又是python3的问题,从这个链接找到答案. ...

  9. (三)pdf的构成之文件头综述

    引自:https://blog.csdn.net/steve_cui/article/details/81981943 一般情况下,文件头,即,PDF文件的第一行,它用来定义PDF的版本,从而确定该P ...

随机推荐

  1. 干货 | 10分钟搞懂branch and bound(分支定界)算法的代码实现附带java代码

    Outline 前言 Example-1 Example-2 运行说明 00 前言 前面一篇文章我们讲了branch and bound算法的相关概念.可能大家对精确算法实现的印象大概只有一个,调用求 ...

  2. react的3种组件

    推荐阅读:https://www.jianshu.com/p/2726b8654989 1. createClass 已不推荐使用,这里不再多讲.但你仍需要了解它,因为你可能会接触到一些旧项目,或者一 ...

  3. jmeter(四十四)常用性能指标分析

    概述 我们在用jmeter做性能测试的时候,有一些关键性的性能指标需要去分析.但是由于开源工具本身的局限性,这些指标在工具中的命名极易对我们造成混淆.所以我们需要对这些指标一一进行剖析. 指标分析 响 ...

  4. 刷题记录:Shrine

    目录 刷题记录:Shrine 刷题记录:Shrine 题目复现链接:https://buuoj.cn/challenges 参考链接:Shrine 解此题总结一下flask的SSTI:CTF SSTI ...

  5. 【大数据作业十一】分布式并行计算MapReduce

    作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.用自己的话阐明Hadoop平台上HDFS和MapReduce的功 ...

  6. eos的资源和工具列表

    1.eos买rex的时候同时获得投票收益: https://b1.run/eosproxy eos的投票衰减规则: Block.one 希望确保用户经常更新他们的投票设定,而不是设置完就不管了.为了促 ...

  7. Java线程的wait(), notify()和notifyAll()

    Java线程生命周期 类java.lang.Thread包含一个静态的State enum用于定义每种可能的状态. 在任意的时间点, 线程会处于以下的状态之一: NEW – 新创建的线程, 还未启动( ...

  8. 使用ItextSharop合并pdf文件,体积变大的解决

    通用的合并方式导致输出的pdf 文件中嵌入了大量的重复字体.导致文件体积膨胀. 使用基于内存流的方式,读取文件字节,可以解决重复字体的嵌入问题: public static string MergeF ...

  9. ElementUi tree 指定节点是否显示复选框

    场景:树的内容是省份下面的城市有酒店 需求:只能多选酒店(为了删除它们),至于为啥不能选省份或者城市更加灵活的去删除相应酒店,这你得去问后台0.0,他只弄了根据酒店id去删除.嗯,连创建酒店的时候级联 ...

  10. Activiti task claim

    Activiti task claim claim,认领,领取 claim - 国内版 Bing https://cn.bing.com/search?FORM=U227DF&PC=U227& ...