判断图片是否为现场照片(Live Photo亦即内含Exif信息)
一、理论
1、什么是Exif信息和现场照片
Exif信息是可以被任意编辑的,因此只有参考的功能。Exif信息以0xFFE1作为开头标记,后两个字节表示Exif信息的长度。所有Exif信息最大为64 kb,而内部采用TIFF格式。
Exif_百度百科可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。Exif最初由日本电子工业发展协会在1996年制定,版本为1.0。1998年,升级到2.1,增加了对音频文件的支持。2002年3月,发表了2.2版。https://baike.baidu/item/Exif?fr=ala0_1_1 当1个图片文件包含Exif信息时,我们称该图片为现场照片,即:Live Photo。
2、现场照片(iPhone称实况照片)的直观的判断
1.2.1、右键图片文件,属性,总是包含“照相机”的文件扩展对象的属性信息
但是,文件的这个扩展对象的属性,是可以被我们认为的修改的,改后可能就抹掉了。你如我们可以用Adobe PhotoShop来更改它,抹掉后,它就不再包含Exif的具体字段信息了;但它仍旧是现场照片(除非你把它转储为Web所用格式,即进行了内存转储),因为格式你改不了的。
怎么改呢,看看:
https://jingyan.baidu/article/af9f5a2d2f443443140a4590.htmlhttps://jingyan.baidu/article/af9f5a2d2f443443140a4590.html
1.2.2、当你用记事本强行打开1个现场照片时,它的内容的头部,总是包含Exif MM字样:
注意,是“Exif MM”字样【或“xif MM”字样(iPhone照片转为jpg后)】,并非“ExifJPEG”格式的压缩字样,因为ExifJPEG它有可能也是一种JFIF文件(JPEG文件内部交换格式),而JFIF文件并非现场照片。
JPEG/JFIF是万维网(World Wide Web)上最普遍的被用来存储和传输照片的格式。它并不适合于线条绘图(drawing)和其他文字或图标(iconic)的图形,因为它的压缩方法用在这些类型的图形上,得到的结果并不好(PNG和GIF通常是用来存储这类的图形;GIF每个像素只有8比特,并不很适合于存储彩色照片,PNG可以无损地存储照片(iPhone的照片即为PNG无损照片格式),但是文件太大的缺点让它不太适合在网络上传输)。
PNG和GIF也有可能包含Exif信息,也有可能是现场照片。
Android手机和华为鸿蒙HarmonyOS现场照片一般用JPEG格式来储存的,而苹果Apple现场照片一般使用PNG格式存储。
无论是JPEG、还是PNG或GIF格式的图片,也无论它们是否被第三方软件进行过格式之间的转化,如果它们是现场照片,都有1个共同特征,就是:Exif信息以0xFFE1作为开头标记,后两个字节表示Exif信息的长度。所以Exif信息最大为64 kb,而内部采用TIFF格式。
比如,iPhone的QQ邮箱app发送其上现场照片(实况照片):
自动打包为.zip后发送QQ电子邮件 :
对Exif格式及其信息的特别权限,包括位置信息和Exif元数据信息:
iPhone的PNG无损现场照片,操作系统邮件-属性-详细信息,是看不到Exif信息的,但:并不代表它不包含Exif信息,并不代表它不是现场照片:
而Android的JPG有损现场照片或PNG被转化JPG后的的文件不同,操作系统邮件-属性-详细信息,总是能够看到Exif信息的:
iPhone的QQ邮箱发送后,接收端:
下载后,用Delphi App打开照片,均会返回一致的Exif信息:
无论是JPEG、还是PNG或GIF格式的图片,也无论它们是否被第三方软件进行过格式之间的转化,如果它们是现场照片,都有1个共同特征,就是:Exif信息以0xFFE1作为开头标记,后两个字节表示Exif信息的长度。所以Exif信息最大为64 kb,而内部采用TIFF格式:
二、如何判断图片是否为现场照片
2.1、有了一、理论的描述,可以取文件头的特征字节
如果文件流的头部包含有“0xFFE1”,那么它就是内含Exif信息的现场照片,否则就不是。
在内存中:
Exif_Buffer特征信息每字节8位表示:000000FF000000E1
Exif_Buffer特征信息每字节4位表示:00FF00E1
Exif信息以0xFFE1作为开头标记,后两个字节表示Exif信息的长度。Exif信息最大为64 kb,而内部采用TIFF格式(通用的扫描图像文件的格式)。
2.2、Delphi编程判断图片是否为照片并提取Exif的详细信息
(略)。
喜欢的话,就在下面点个赞、收藏就好了,方便看下次的分享:
更多推荐
判断图片是否为现场照片(Live Photo亦即内含Exif信息)
发布评论