Android Adobe XMP与JPEG

这篇文章的目的是简略的描述怎么在Android上将XMP信息写入JPEG文件,比如将图像的深度信息,全景图信息,连拍信息写入JPEG,Google Photos可以对一些特殊类型进行识别

Adobe XMP

关于Adobe XMP的资料网上可以说是非常少,但是它已经是非常古老的技术,并且具有比较广泛的应用.XMP技术用于在原文件上附加信息,比如将文件的修改日期,修改人,创建人,以及一些描述信息写入文件本身.这是一个比较简单的工作,但是需要一套通用的标准来规范化,Adobe XMP就是这样一套标准,它描述了针对某一种文件类型,比如JPEG图片,我们该以怎样的形式把附加信息写入JPEG文件,定义一套通用的描述符,其他人可以使用通用的描述符查询对应的信息.

XMP的附加信息使用XML描述,基本上就是将一个XML写入到目标文件,通用的描述符就是XMP规范应用的一套命名空间,命名空间下定义了很多的属性

JPEG

JPEG网上有比较多的参考资料,针对我们的目的,这里主要贴一下如果我们用二进制显示一张JPEG,怎么去解读它,编解码不是我们所关心的.

先贴一张二进制的JPEG图片
Android Adobe XMP与JPEG_第1张图片

首先是 FF D8作为文件的第1个和第2个字节,这个在JPEG中有特殊意义,SOI(Start Of Image)
后面跟着 FF E0 也是特殊字符,表示APP0,用于描述缩略图等的信息
除了 FF E0, FF E1… FF EF都是特殊字符,表示App1到App15,可以用来描述附加信息.我们的XMP就可以保存在 App1-App15任意一个中.

JPEG相关的博客和资料:

  • JPEG文件编/解码详解
  • JPEG图像编码标准
  • JPEG文件中的EXIF

Android JPEG

Android通过导入包实现对JPEG的Exif信息和XMP进行处理

Android Project :https://github.com/HJCYFY/Android-XMPDemo

其他资料:https://download.csdn.net/download/huajun998/10595526

你可能感兴趣的:(Android,相关)