码迷,mamicode.com
首页 > 其他好文 > 详细

使用 memoryview 和 struct 查看一个 GIF 图像的首部

时间:2018-01-19 16:45:06      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:gif   一个   pack   创建   字节   版本   复制   head   对象   

 

>>> import struct
>>> fmt = <3s3sHH # ?
>>> with open(filter.gif, rb) as fp:
... img = memoryview(fp.read()) # ?
...
>>> header = img[:10] # ?
>>> bytes(header) # ?
bGIF89a+\x02\xe6\x00
>>> struct.unpack(fmt, header) # ?
(bGIF, b89a, 555, 230)
>>> del header # ?
>>> del img
  1. 结构体的格式:< 是小字节序,3s3s 是两个 3 字节序列,HH 是两个16 位二进制整数
  2. 使用内存中的文件内容创建一个memoryview对象
  3. 然后使用它的切片在创建一个memoryview对象,这里不会复制字节序列
  4. 转换成字节序列,这里只是为了显示,这里复制了是个字节
  5. 拆包memoryview对象,得到一个元祖,包含类型、版本、宽度和高度
  6. 删除引用,释放memoryview实例所占用的内存

使用 memoryview 和 struct 查看一个 GIF 图像的首部

标签:gif   一个   pack   创建   字节   版本   复制   head   对象   

原文地址:https://www.cnblogs.com/Erick-L/p/8317453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!