heic格式
登录
注册
Heic 文件格式解析(原创) RonPatton 2018-03-11 首发专栏:天天论道关注
Heic 文件格式解析
heic是一种图像格式,自iOS 11开始,苹果将heic设置为图片存储的默认格式。这种图片无法在windows 系统中直接打开。http://nokiatech.github.io/heif/ 网站提供了详细的该格式文件的读写方法,及如何将该种文件转化为“jpg” 类型图像文件。通过二进制查看,该文件结构是一种长度桢数据结构,为四字节长度+四字节类型+数据的格式。
选取网上一张示例图片(https://raw.githubusercontent.com/nokiatech/heif/gh-pages/content/images/cheers_1440x960.heic),按照该方法提取一级结构如下:
总长度(0x) a1cb
偏移位置(0x)** 4字节长度(0x)** 类型
a1cb
0000 **001c **ftyp
001c **0200 **meta
021c **942d **mdat
9649 **0b72 **mdat
a1bb **0010 **mdat
无标题.png
(上图是部分二进制图片格式)
对类型为“meta” 的段再进行类似的结构提取方式为长度+类型+数据,如果长度为0直接跳过 :结果如下:
偏移位置(0x)** 4字节长度(0x)** 类型
0024 **0000 **
0028 **0021 **hdlr
0049 **000e **pitm
0057 **0034 **iloc
008b **004e **iinf
00d9 **001a **iref
00f3 **0129 **iprp
在说明文档中有格式解析,和每个参数的实际意义:
http://standards.iso.org/ittf/PubliclyAvailableStandards/c066067_ISO_IEC_23008-12_2017.zip。我们的示例简单列举如下:
hdlr: 00 00 00 00
pitc: 00 00 00 00
pitm: item_ID= 4e 22
iloc:item_count=2
item_ID=4e 22,extent_count=1,extent_offset=0×224,extent_length=0×9425
item_ID=4e 23,extent_count=1,extent_offset=0×9651,extent_length=0xb6a
iinf: entry_count=2
infe: item_ID= 4e 22 item_type=hvc1
infe: item_ID=4e 23 item_type=hvc1
iref:
referenceType=thmb,from_item_ID=4e 22,ref_count=1,to_item_ID=1;
iprp:
下面图片是文档中对格式的说明,和我们实际的图片略有差异:
无标题.png
专栏
RonPatton
1 篇文章
等级: 1级
关注
||
发表评论已有 4 条评论
crb912 (1级) 2018-03-29回复 1楼
你好,我也编译了Nokia 的 C++库。 但是不知道如何使用这个库提取它的一级结构。
可以指点一下吗?
我的邮箱(base64): bHR3czEyM0BnbWFpbC5jb20=
亮了(2)
22 2018-03-29回复
@ crb912 源码里有
亮了(0)
crb912 (1级) 2018-03-30回复
@ 22 刚学c++,不知道怎么用。。。
亮了(0)
迅捷视频官方账号 (1级) 2018-08-21回复 2楼
说到底HEIC就是苹果官方针对iOS用户研发的一种图片格式,这样做的好处是可以更加稳定的防止用户的流失,但是随着国内的科技水平越来越发达,这种格式早已经有了相应的对策了,比如:苹果HEIC图片转换器都已经可以把HEIC格式转换成JPG、PNG、BMP格式了!
亮了(1)
昵称
请输入昵称
必须您当前尚未登录。登陆?注册邮箱
请输入邮箱地址
必须(保密)表情插图
有人回复时邮件通知我
相关推荐
FREEBUF免责声明协议条款关于我们加入我们广告及服务寻求报道广告合作联系我们友情链接关注我们
官方微信
新浪微博腾讯微博Twitter赞助商
Copyright © 2018 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号
css.php 正在加载中...0daybank
文章评论