不可能的需求

由于开发过程中需要对图片进行处理,需要对图片获取尽可能详细的信息,比如图片的Exif通常包含一些照片拍摄修改的时间,分辨率,大小,经纬度等信息,突然一天新增了一个需求:需要获取图片是前置摄像头拍摄还是后置摄像头拍摄的。得知需求后查询了一众资料,两大搜索Google,百度,Android Developer官方文档,MediaStore中关于Image的类属性、方法,Exif等元数据解析等等,均未看到有标记前后置摄像头的属性,于是反馈,后被告知一加6拍摄的照片有相应字段,于是乎单独拿出来分析了。

不可能的需求?

已知需求:获取图片是前置摄像头拍摄还是后置摄像头拍摄的
尝试方法:

  1. 两大搜索(Google,Baidu)
  2. Android Developer官方文档以及MediaStore中关于Image的类属性、方法
  3. MetaData数据分析

尝试结果:

  1. 失败
  2. 失败

图片的MetaData数据分析

什么是图片的Metadata?摘一段Wiki的解释

1
2
3
4
5
6
7
8
9
10
11
12
Photographs
Metadata may be written into a digital photo file that will identify who owns it, copyright and contact information, what brand or model of camera created the file, along with exposure information (shutter speed, f-stop, etc.) and descriptive information, such as keywords about the photo, making the file or image searchable on a computer and/or the Internet. Some metadata is created by the camera and some is input by the photographer and/or software after downloading to a computer. Most digital cameras write metadata about model number, shutter speed, etc., and some enable you to edit it;[35] this functionality has been available on most Nikon DSLRs since the Nikon D3, on most new Canon cameras since the Canon EOS 7D, and on most Pentax DSLRs since the Pentax K-3. Metadata can be used to make organizing in post-production easier with the use of key-wording. Filters can be used to analyze a specific set of photographs and create selections on criteria like rating or capture time.

Photographic Metadata Standards are governed by organizations that develop the following standards. They include, but are not limited to:

IPTC Information Interchange Model IIM (International Press Telecommunications Council),
IPTC Core Schema for XMP
XMP – Extensible Metadata Platform (an ISO standard)
Exif – Exchangeable image file format, Maintained by CIPA (Camera & Imaging Products Association) and published by JEITA (Japan Electronics and Information Technology Industries Association)
Dublin Core (Dublin Core Metadata Initiative – DCMI)
PLUS (Picture Licensing Universal System).
VRA Core (Visual Resource Association)[36]

Wiki对Exif的解释-https://zh.wikipedia.org/wiki/EXIF
Wiki对XMP的解释-https://zh.wikipedia.org/wiki/XMP

如果你需要查看一张图片的MetaData信息,在不下载任何程序的情况下,当然是放网站上识别了,如:http://metapicz.com/#landing
现在我有一张图使用魅族6 Note拍摄,如下:

将其使用网站识别的结果如下:

可以看出,除了基本的Exif信息,就没有其余的多余信息了,同时还测试了一加5T,vivo,华为,三星,小米等几部手机,都一样没有,贴个一加5T的,其他的就不贴了,如下:

将其使用网站识别的结果如下:

网站显示没有XMP数据,但是你如果信以为真,那你就错了,网站展示的XMP数据只是对标准XMP数据而言,但是对于非标准XMP数据,网站是不识别的。下面我不使用很专业的分析工具,我们使用PhotoShop,它用来分析图片MetaData很是方便。
具体步骤

  1. 将图片使用PhotoShop打开
  2. 使用快捷键CTRL+ALT+SHFIT+I打开MetaData面板
  3. 点击原始数据

下面分别是魅族拍摄的照片的元数据和一加5T拍摄的照片的元数据
魅族6 Note 前置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<xmp:CreatorTool>Meizu Camera</xmp:CreatorTool>
<xmp:ModifyDate>2018-08-02T15:27:15.043670</xmp:ModifyDate>
<xmp:CreateDate>2018-08-02T15:27:15</xmp:CreateDate>
<xmp:MetadataDate>2018-08-02T15:27:15.043670</xmp:MetadataDate>
<photoshop:DateCreated>2018-08-02T15:27:15.072032704</photoshop:DateCreated>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
<xmpMM:DocumentID>BF515DD22603ACF5DFF3D111542D91CE</xmpMM:DocumentID>
<xmpMM:InstanceID>BF515DD22603ACF5DFF3D111542D91CE</xmpMM:InstanceID>
<dc:format>image/jpeg</dc:format>
<tiff:ImageWidth>4608</tiff:ImageWidth>
<tiff:ImageLength>3456</tiff:ImageLength>
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
<tiff:SamplesPerPixel>3</tiff:SamplesPerPixel>
<tiff:YCbCrPositioning>1</tiff:YCbCrPositioning>
<tiff:XResolution>72/1</tiff:XResolution>
<tiff:YResolution>72/1</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:Make>Meizu</tiff:Make>
<tiff:Model>M6 Note</tiff:Model>
<exif:ExifVersion>0220</exif:ExifVersion>
<exif:FlashpixVersion>0100</exif:FlashpixVersion>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:ComponentsConfiguration>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>0</rdf:li>
</rdf:Seq>
</exif:ComponentsConfiguration>
<exif:PixelXDimension>4608</exif:PixelXDimension>
<exif:PixelYDimension>3456</exif:PixelYDimension>
<exif:DateTimeOriginal>2018-08-02T15:27:15</exif:DateTimeOriginal>
<exif:ExposureTime>1/50</exif:ExposureTime>
<exif:FNumber>200/100</exif:FNumber>
<exif:ExposureProgram>0</exif:ExposureProgram>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>123</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:ShutterSpeedValue>5644/1000</exif:ShutterSpeedValue>
<exif:ApertureValue>2000000/1000000</exif:ApertureValue>
<exif:BrightnessValue>248/100</exif:BrightnessValue>
<exif:MeteringMode>2</exif:MeteringMode>
<exif:Flash rdf:parseType="Resource">
<exif:Fired>False</exif:Fired>
<exif:Return>0</exif:Return>
<exif:Mode>2</exif:Mode>
<exif:Function>False</exif:Function>
<exif:RedEyeMode>False</exif:RedEyeMode>
</exif:Flash>
<exif:FocalLength>3519/1000</exif:FocalLength>
<exif:SensingMethod>2</exif:SensingMethod>
<exif:SceneType>1</exif:SceneType>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:WhiteBalance>0</exif:WhiteBalance>
<exif:FocalLengthIn35mmFilm>25</exif:FocalLengthIn35mmFilm>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:SubSecTime>043670</exif:SubSecTime>
<exif:SubSecTimeOriginal>043670</exif:SubSecTimeOriginal>
<exif:SubSecTimeDigitized>043670</exif:SubSecTimeDigitized>
<exif:GPSLatitude>31,12.8173N</exif:GPSLatitude>
<exif:GPSLongitude>121,27.1615E</exif:GPSLongitude>
<exif:GPSAltitudeRef>200/100</exif:GPSAltitudeRef>
<exif:GPSAltitude>0/1000</exif:GPSAltitude>
<exif:GPSTimeStamp>2018-08-02T07:27:14Z</exif:GPSTimeStamp>
<exif:GPSImgDirectionRef>M</exif:GPSImgDirectionRef>
<exif:GPSImgDirection>0/1</exif:GPSImgDirection>
<exif:GPSProcessingMethods>NETWORK</exif:GPSProcessingMethods>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

魅族6 Note 后置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<xmp:CreatorTool>Meizu Camera</xmp:CreatorTool>
<xmp:ModifyDate>2018-08-02T15:26:52.141073</xmp:ModifyDate>
<xmp:CreateDate>2018-08-02T15:26:52</xmp:CreateDate>
<xmp:MetadataDate>2018-08-02T15:26:52.141073</xmp:MetadataDate>
<photoshop:DateCreated>2018-08-02T15:26:51.339079232</photoshop:DateCreated>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
<xmpMM:DocumentID>0782F6701AFCAD765F7A8E128F350371</xmpMM:DocumentID>
<xmpMM:InstanceID>0782F6701AFCAD765F7A8E128F350371</xmpMM:InstanceID>
<dc:format>image/jpeg</dc:format>
<tiff:ImageWidth>3000</tiff:ImageWidth>
<tiff:ImageLength>4000</tiff:ImageLength>
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
<tiff:SamplesPerPixel>3</tiff:SamplesPerPixel>
<tiff:YCbCrPositioning>1</tiff:YCbCrPositioning>
<tiff:XResolution>72/1</tiff:XResolution>
<tiff:YResolution>72/1</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:Make>Meizu</tiff:Make>
<tiff:Model>M6 Note</tiff:Model>
<exif:ExifVersion>0220</exif:ExifVersion>
<exif:FlashpixVersion>0100</exif:FlashpixVersion>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:ComponentsConfiguration>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>0</rdf:li>
</rdf:Seq>
</exif:ComponentsConfiguration>
<exif:PixelXDimension>3000</exif:PixelXDimension>
<exif:PixelYDimension>4000</exif:PixelYDimension>
<exif:DateTimeOriginal>2018-08-02T15:26:52</exif:DateTimeOriginal>
<exif:ExposureTime>1/25</exif:ExposureTime>
<exif:FNumber>190/100</exif:FNumber>
<exif:ExposureProgram>0</exif:ExposureProgram>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>109</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:ShutterSpeedValue>4643/1000</exif:ShutterSpeedValue>
<exif:ApertureValue>1851999/1000000</exif:ApertureValue>
<exif:BrightnessValue>132/100</exif:BrightnessValue>
<exif:MeteringMode>2</exif:MeteringMode>
<exif:Flash rdf:parseType="Resource">
<exif:Fired>False</exif:Fired>
<exif:Return>0</exif:Return>
<exif:Mode>2</exif:Mode>
<exif:Function>False</exif:Function>
<exif:RedEyeMode>False</exif:RedEyeMode>
</exif:Flash>
<exif:FocalLength>3940/1000</exif:FocalLength>
<exif:SensingMethod>2</exif:SensingMethod>
<exif:SceneType>1</exif:SceneType>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:WhiteBalance>0</exif:WhiteBalance>
<exif:FocalLengthIn35mmFilm>24</exif:FocalLengthIn35mmFilm>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:SubSecTime>141073</exif:SubSecTime>
<exif:SubSecTimeOriginal>141073</exif:SubSecTimeOriginal>
<exif:SubSecTimeDigitized>141073</exif:SubSecTimeDigitized>
<exif:GPSLatitude>31,12.8173N</exif:GPSLatitude>
<exif:GPSLongitude>121,27.1615E</exif:GPSLongitude>
<exif:GPSAltitudeRef>190/100</exif:GPSAltitudeRef>
<exif:GPSAltitude>0/1000</exif:GPSAltitude>
<exif:GPSTimeStamp>2018-08-02T07:26:43Z</exif:GPSTimeStamp>
<exif:GPSImgDirectionRef>M</exif:GPSImgDirectionRef>
<exif:GPSImgDirection>14/1</exif:GPSImgDirection>
<exif:GPSProcessingMethods>NETWORK</exif:GPSProcessingMethods>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

OnePlus 5T 前置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:OPMedia="http://ns.oneplus.com/media/1.0"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<OPMedia:CaptureMode>Photo</OPMedia:CaptureMode>
<OPMedia:IsHDRActive>False</OPMedia:IsHDRActive>
<OPMedia:LensFacing>Front</OPMedia:LensFacing>
<xmp:CreatorTool>OnePlus5T-user 8.1.0 OPM1.171019.011 87 release-keys</xmp:CreatorTool>
<xmp:ModifyDate>2018-07-31T10:53:50.002856</xmp:ModifyDate>
<xmp:CreateDate>2018-07-31T10:53:50</xmp:CreateDate>
<xmp:MetadataDate>2018-07-31T10:53:50.002856</xmp:MetadataDate>
<photoshop:DateCreated>2018-07-31T10:53:48.561032704</photoshop:DateCreated>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
<xmpMM:DocumentID>3341B1440498773B1C38052765AA3CC1</xmpMM:DocumentID>
<xmpMM:InstanceID>3341B1440498773B1C38052765AA3CC1</xmpMM:InstanceID>
<dc:format>image/jpeg</dc:format>
<tiff:ImageWidth>3456</tiff:ImageWidth>
<tiff:ImageLength>4608</tiff:ImageLength>
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
<tiff:SamplesPerPixel>3</tiff:SamplesPerPixel>
<tiff:YCbCrPositioning>1</tiff:YCbCrPositioning>
<tiff:XResolution>72/1</tiff:XResolution>
<tiff:YResolution>72/1</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:Make>OnePlus</tiff:Make>
<tiff:Model>ONEPLUS A5010</tiff:Model>
<exif:ExifVersion>0220</exif:ExifVersion>
<exif:FlashpixVersion>0100</exif:FlashpixVersion>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:ComponentsConfiguration>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>0</rdf:li>
</rdf:Seq>
</exif:ComponentsConfiguration>
<exif:PixelXDimension>3456</exif:PixelXDimension>
<exif:PixelYDimension>4608</exif:PixelYDimension>
<exif:DateTimeOriginal>2018-07-31T10:53:50</exif:DateTimeOriginal>
<exif:ExposureTime>1/25</exif:ExposureTime>
<exif:FNumber>200/100</exif:FNumber>
<exif:ExposureProgram>0</exif:ExposureProgram>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>200</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:ShutterSpeedValue>4643/1000</exif:ShutterSpeedValue>
<exif:ApertureValue>2000000/1000000</exif:ApertureValue>
<exif:BrightnessValue>0/100</exif:BrightnessValue>
<exif:MeteringMode>0</exif:MeteringMode>
<exif:Flash rdf:parseType="Resource">
<exif:Fired>False</exif:Fired>
<exif:Return>0</exif:Return>
<exif:Mode>2</exif:Mode>
<exif:Function>False</exif:Function>
<exif:RedEyeMode>False</exif:RedEyeMode>
</exif:Flash>
<exif:FocalLength>3519/1000</exif:FocalLength>
<exif:SensingMethod>2</exif:SensingMethod>
<exif:SceneType>1</exif:SceneType>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:WhiteBalance>0</exif:WhiteBalance>
<exif:FocalLengthIn35mmFilm>20</exif:FocalLengthIn35mmFilm>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:SubSecTime>002856</exif:SubSecTime>
<exif:SubSecTimeOriginal>002856</exif:SubSecTimeOriginal>
<exif:SubSecTimeDigitized>002856</exif:SubSecTimeDigitized>
<exif:GPSLatitude>31,12.6128N</exif:GPSLatitude>
<exif:GPSLongitude>121,27.4536E</exif:GPSLongitude>
<exif:GPSAltitudeRef>0</exif:GPSAltitudeRef>
<exif:GPSAltitude>0/1000</exif:GPSAltitude>
<exif:GPSTimeStamp>2018-07-31T02:53:48Z</exif:GPSTimeStamp>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

OnePlus 5T 后置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:OPMedia="http://ns.oneplus.com/media/1.0"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<OPMedia:CaptureMode>Photo</OPMedia:CaptureMode>
<OPMedia:Scene>AutoHDR</OPMedia:Scene>
<OPMedia:IsHDRActive>False</OPMedia:IsHDRActive>
<OPMedia:LensFacing>Back</OPMedia:LensFacing>
<xmp:CreatorTool>OnePlus5T-user 8.1.0 OPM1.171019.011 87 release-keys</xmp:CreatorTool>
<xmp:ModifyDate>2018-07-30T17:02:51.100627</xmp:ModifyDate>
<xmp:CreateDate>2018-07-30T17:02:51</xmp:CreateDate>
<xmp:MetadataDate>2018-07-30T17:02:51.100627</xmp:MetadataDate>
<photoshop:DateCreated>2018-07-30T17:02:52.842752192</photoshop:DateCreated>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
<xmpMM:DocumentID>9FE8455EBCFE4DD43B7C0F1A77AE16AD</xmpMM:DocumentID>
<xmpMM:InstanceID>9FE8455EBCFE4DD43B7C0F1A77AE16AD</xmpMM:InstanceID>
<dc:format>image/jpeg</dc:format>
<tiff:ImageWidth>2304</tiff:ImageWidth>
<tiff:ImageLength>4608</tiff:ImageLength>
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
<tiff:Orientation>0</tiff:Orientation>
<tiff:SamplesPerPixel>3</tiff:SamplesPerPixel>
<tiff:YCbCrPositioning>1</tiff:YCbCrPositioning>
<tiff:XResolution>72/1</tiff:XResolution>
<tiff:YResolution>72/1</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:Make>OnePlus</tiff:Make>
<tiff:Model>ONEPLUS A5010</tiff:Model>
<exif:ExifVersion>0220</exif:ExifVersion>
<exif:FlashpixVersion>0100</exif:FlashpixVersion>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:ComponentsConfiguration>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>0</rdf:li>
</rdf:Seq>
</exif:ComponentsConfiguration>
<exif:PixelXDimension>2304</exif:PixelXDimension>
<exif:PixelYDimension>4608</exif:PixelYDimension>
<exif:DateTimeOriginal>2018-07-30T17:02:51</exif:DateTimeOriginal>
<exif:ExposureTime>1/33</exif:ExposureTime>
<exif:FNumber>170/100</exif:FNumber>
<exif:ExposureProgram>0</exif:ExposureProgram>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>1000</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:ShutterSpeedValue>5058/1000</exif:ShutterSpeedValue>
<exif:ApertureValue>1531069/1000000</exif:ApertureValue>
<exif:BrightnessValue>-222/100</exif:BrightnessValue>
<exif:MeteringMode>0</exif:MeteringMode>
<exif:Flash rdf:parseType="Resource">
<exif:Fired>False</exif:Fired>
<exif:Return>0</exif:Return>
<exif:Mode>2</exif:Mode>
<exif:Function>False</exif:Function>
<exif:RedEyeMode>False</exif:RedEyeMode>
</exif:Flash>
<exif:FocalLength>4103/1000</exif:FocalLength>
<exif:SensingMethod>2</exif:SensingMethod>
<exif:SceneType>1</exif:SceneType>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:WhiteBalance>0</exif:WhiteBalance>
<exif:FocalLengthIn35mmFilm>24</exif:FocalLengthIn35mmFilm>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:SubSecTime>100627</exif:SubSecTime>
<exif:SubSecTimeOriginal>100627</exif:SubSecTimeOriginal>
<exif:SubSecTimeDigitized>100627</exif:SubSecTimeDigitized>
<exif:GPSLatitude>31,12.6128N</exif:GPSLatitude>
<exif:GPSLongitude>121,27.4536E</exif:GPSLongitude>
<exif:GPSAltitudeRef>0</exif:GPSAltitudeRef>
<exif:GPSAltitude>0/1000</exif:GPSAltitude>
<exif:GPSTimeStamp>2018-07-30T09:02:50Z</exif:GPSTimeStamp>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

可以看出,一加自己定义了一个XML标签,并且使用该标签写入了自己的数据,其中<OPMedia:LensFacing>Back</OPMedia:LensFacing>便是我们寻找的,键LensFacing对应的值为Back,表明这张图片使用后置摄像头拍摄,那么是不是所有的机型都有写入这个信息呢?下面是其他机型拍摄的照片的元数据:
OnePlus 6 前置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:OPMedia="http://ns.oneplus.com/media/1.0"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<OPMedia:CaptureMode>Photo</OPMedia:CaptureMode>
<OPMedia:Scene>AutoHDR</OPMedia:Scene>
<OPMedia:IsHDRActive>False</OPMedia:IsHDRActive>
<OPMedia:LensFacing>Front</OPMedia:LensFacing>
<xmp:ModifyDate>2018-08-01T09:57:04.333801</xmp:ModifyDate>
<xmp:CreateDate>2018-08-01T09:57:04</xmp:CreateDate>
<xmp:MetadataDate>2018-08-01T09:57:04.333801</xmp:MetadataDate>
<photoshop:DateCreated>2018-08-01T09:57:02.793550912</photoshop:DateCreated>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
<xmpMM:DocumentID>037F51FB2EE58CABACEA2D3E5655CECB</xmpMM:DocumentID>
<xmpMM:InstanceID>037F51FB2EE58CABACEA2D3E5655CECB</xmpMM:InstanceID>
<dc:format>image/jpeg</dc:format>
<tiff:ImageWidth>4608</tiff:ImageWidth>
<tiff:ImageLength>3456</tiff:ImageLength>
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
<tiff:Orientation>1</tiff:Orientation>
<tiff:SamplesPerPixel>3</tiff:SamplesPerPixel>
<tiff:YCbCrPositioning>1</tiff:YCbCrPositioning>
<tiff:XResolution>72/1</tiff:XResolution>
<tiff:YResolution>72/1</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:Make>OnePlus</tiff:Make>
<tiff:Model>ONEPLUS A6000</tiff:Model>
<exif:ExifVersion>0220</exif:ExifVersion>
<exif:FlashpixVersion>0100</exif:FlashpixVersion>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:ComponentsConfiguration>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>0</rdf:li>
</rdf:Seq>
</exif:ComponentsConfiguration>
<exif:PixelXDimension>4608</exif:PixelXDimension>
<exif:PixelYDimension>3456</exif:PixelYDimension>
<exif:DateTimeOriginal>2018-08-01T09:57:04</exif:DateTimeOriginal>
<exif:ExposureTime>500/10000</exif:ExposureTime>
<exif:FNumber>20000/10000</exif:FNumber>
<exif:ExposureProgram>2</exif:ExposureProgram>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>500</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:ShutterSpeedValue>5058/1000</exif:ShutterSpeedValue>
<exif:ApertureValue>2000000/1000000</exif:ApertureValue>
<exif:BrightnessValue>-316/100</exif:BrightnessValue>
<exif:ExposureBiasValue>0/6</exif:ExposureBiasValue>
<exif:MaxApertureValue>153/100</exif:MaxApertureValue>
<exif:MeteringMode>1</exif:MeteringMode>
<exif:LightSource>0</exif:LightSource>
<exif:Flash rdf:parseType="Resource">
<exif:Fired>False</exif:Fired>
<exif:Return>0</exif:Return>
<exif:Mode>3</exif:Mode>
<exif:Function>False</exif:Function>
<exif:RedEyeMode>False</exif:RedEyeMode>
</exif:Flash>
<exif:FocalLength>3480/1000</exif:FocalLength>
<exif:SensingMethod>1</exif:SensingMethod>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:WhiteBalance>0</exif:WhiteBalance>
<exif:FocalLengthIn35mmFilm>25</exif:FocalLengthIn35mmFilm>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:SubSecTime>333801</exif:SubSecTime>
<exif:SubSecTimeOriginal>333801</exif:SubSecTimeOriginal>
<exif:SubSecTimeDigitized>333801</exif:SubSecTimeDigitized>
<exif:GPSLatitude>31,12.7098</exif:GPSLatitude>
<exif:GPSLongitude>121,27.4435E</exif:GPSLongitude>
<exif:GPSAltitudeRef>0</exif:GPSAltitudeRef>
<exif:GPSAltitude>0/1000</exif:GPSAltitude>
<exif:GPSTimeStamp>2018-08-01T01:57:04Z</exif:GPSTimeStamp>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

OnePlus 6 后置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:OPMedia="http://ns.oneplus.com/media/1.0"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<OPMedia:CaptureMode>Photo</OPMedia:CaptureMode>
<OPMedia:Scene>AutoHDR</OPMedia:Scene>
<OPMedia:IsHDRActive>False</OPMedia:IsHDRActive>
<OPMedia:LensFacing>Back</OPMedia:LensFacing>
<xmp:ModifyDate>2018-05-25T17:21:18.333801</xmp:ModifyDate>
<xmp:CreateDate>2018-05-25T17:21:18</xmp:CreateDate>
<xmp:MetadataDate>2018-05-25T17:21:18.333801</xmp:MetadataDate>
<photoshop:DateCreated>2018-05-25T17:21:16.793550912</photoshop:DateCreated>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
<xmpMM:DocumentID>2C0E6CBC34D567743E5B9DF66D8FF4AF</xmpMM:DocumentID>
<xmpMM:InstanceID>2C0E6CBC34D567743E5B9DF66D8FF4AF</xmpMM:InstanceID>
<dc:format>image/jpeg</dc:format>
<tiff:ImageWidth>4608</tiff:ImageWidth>
<tiff:ImageLength>3456</tiff:ImageLength>
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
<tiff:Orientation>1</tiff:Orientation>
<tiff:SamplesPerPixel>3</tiff:SamplesPerPixel>
<tiff:YCbCrPositioning>1</tiff:YCbCrPositioning>
<tiff:XResolution>72/1</tiff:XResolution>
<tiff:YResolution>72/1</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:Make>OnePlus</tiff:Make>
<tiff:Model>ONEPLUS A6000</tiff:Model>
<exif:ExifVersion>0220</exif:ExifVersion>
<exif:FlashpixVersion>0100</exif:FlashpixVersion>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:ComponentsConfiguration>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>0</rdf:li>
</rdf:Seq>
</exif:ComponentsConfiguration>
<exif:PixelXDimension>4608</exif:PixelXDimension>
<exif:PixelYDimension>3456</exif:PixelYDimension>
<exif:DateTimeOriginal>2018-05-25T17:21:18</exif:DateTimeOriginal>
<exif:ExposureTime>100/10000</exif:ExposureTime>
<exif:FNumber>17000/10000</exif:FNumber>
<exif:ExposureProgram>2</exif:ExposureProgram>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>400</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:ShutterSpeedValue>5058/1000</exif:ShutterSpeedValue>
<exif:ApertureValue>1531069/1000000</exif:ApertureValue>
<exif:BrightnessValue>-316/100</exif:BrightnessValue>
<exif:ExposureBiasValue>0/6</exif:ExposureBiasValue>
<exif:MaxApertureValue>153/100</exif:MaxApertureValue>
<exif:MeteringMode>1</exif:MeteringMode>
<exif:LightSource>0</exif:LightSource>
<exif:Flash rdf:parseType="Resource">
<exif:Fired>False</exif:Fired>
<exif:Return>0</exif:Return>
<exif:Mode>3</exif:Mode>
<exif:Function>False</exif:Function>
<exif:RedEyeMode>False</exif:RedEyeMode>
</exif:Flash>
<exif:FocalLength>4250/1000</exif:FocalLength>
<exif:SensingMethod>1</exif:SensingMethod>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:WhiteBalance>0</exif:WhiteBalance>
<exif:FocalLengthIn35mmFilm>25</exif:FocalLengthIn35mmFilm>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:SubSecTime>333801</exif:SubSecTime>
<exif:SubSecTimeOriginal>333801</exif:SubSecTimeOriginal>
<exif:SubSecTimeDigitized>333801</exif:SubSecTimeDigitized>
<exif:GPSLatitude>31,12.7104</exif:GPSLatitude>
<exif:GPSLongitude>121,27.4342E</exif:GPSLongitude>
<exif:GPSAltitudeRef>0</exif:GPSAltitudeRef>
<exif:GPSAltitude>0/1000</exif:GPSAltitude>
<exif:GPSTimeStamp>2018-05-25T09:21:18Z</exif:GPSTimeStamp>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

vivo X9 前置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<xmp:CreatorTool>msm8953_64-user 7.1.2 N2G47H eng.compil.20180716.175053 release-keys</xmp:CreatorTool>
<xmp:ModifyDate>2018-08-02T14:48:40.675561</xmp:ModifyDate>
<xmp:CreateDate>2018-08-02T14:48:40</xmp:CreateDate>
<xmp:MetadataDate>2018-08-02T14:48:40.675561</xmp:MetadataDate>
<photoshop:DateCreated>2018-08-02T14:48:41.251134528</photoshop:DateCreated>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
<xmpMM:DocumentID>37EE2F012E274C22C2D5506C2A1902CF</xmpMM:DocumentID>
<xmpMM:InstanceID>37EE2F012E274C22C2D5506C2A1902CF</xmpMM:InstanceID>
<dc:format>image/jpeg</dc:format>
<tiff:ImageWidth>3840</tiff:ImageWidth>
<tiff:ImageLength>5120</tiff:ImageLength>
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
<tiff:SamplesPerPixel>3</tiff:SamplesPerPixel>
<tiff:YCbCrPositioning>1</tiff:YCbCrPositioning>
<tiff:XResolution>72/1</tiff:XResolution>
<tiff:YResolution>72/1</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:Make>vivo</tiff:Make>
<tiff:Model>vivo X9</tiff:Model>
<exif:ExifVersion>0220</exif:ExifVersion>
<exif:FlashpixVersion>0100</exif:FlashpixVersion>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:ComponentsConfiguration>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>0</rdf:li>
</rdf:Seq>
</exif:ComponentsConfiguration>
<exif:PixelXDimension>3840</exif:PixelXDimension>
<exif:PixelYDimension>5120</exif:PixelYDimension>
<exif:DateTimeOriginal>2018-08-02T14:48:40</exif:DateTimeOriginal>
<exif:ExposureTime>10/333</exif:ExposureTime>
<exif:FNumber>200/100</exif:FNumber>
<exif:ExposureProgram>0</exif:ExposureProgram>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>311</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:ShutterSpeedValue>5058/1000</exif:ShutterSpeedValue>
<exif:ApertureValue>2000000/1000000</exif:ApertureValue>
<exif:BrightnessValue>59/100</exif:BrightnessValue>
<exif:MeteringMode>2</exif:MeteringMode>
<exif:Flash rdf:parseType="Resource">
<exif:Fired>False</exif:Fired>
<exif:Return>0</exif:Return>
<exif:Mode>0</exif:Mode>
<exif:Function>False</exif:Function>
<exif:RedEyeMode>False</exif:RedEyeMode>
</exif:Flash>
<exif:FocalLength>387/100</exif:FocalLength>
<exif:SensingMethod>2</exif:SensingMethod>
<exif:SceneType>1</exif:SceneType>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:WhiteBalance>0</exif:WhiteBalance>
<exif:FocalLengthIn35mmFilm>26</exif:FocalLengthIn35mmFilm>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:SubSecTime>675561</exif:SubSecTime>
<exif:SubSecTimeOriginal>675561</exif:SubSecTimeOriginal>
<exif:SubSecTimeDigitized>675561</exif:SubSecTimeDigitized>
<exif:GPSAltitudeRef>200/100</exif:GPSAltitudeRef>
<exif:GPSTimeStamp>2018-08-02T06:48:40Z</exif:GPSTimeStamp>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

vivo X9 后置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<xmp:CreatorTool>msm8953_64-user 7.1.2 N2G47H eng.compil.20180716.175053 release-keys</xmp:CreatorTool>
<xmp:ModifyDate>2018-08-02T14:48:14.666509</xmp:ModifyDate>
<xmp:CreateDate>2018-08-02T14:48:14</xmp:CreateDate>
<xmp:MetadataDate>2018-08-02T14:48:14.666509</xmp:MetadataDate>
<photoshop:DateCreated>2018-08-02T14:48:14.78906912</photoshop:DateCreated>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
<xmpMM:DocumentID>5EFA5DBFD6539AE7059A28B40B79AEAE</xmpMM:DocumentID>
<xmpMM:InstanceID>5EFA5DBFD6539AE7059A28B40B79AEAE</xmpMM:InstanceID>
<dc:format>image/jpeg</dc:format>
<tiff:ImageWidth>3456</tiff:ImageWidth>
<tiff:ImageLength>4608</tiff:ImageLength>
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
<tiff:SamplesPerPixel>3</tiff:SamplesPerPixel>
<tiff:YCbCrPositioning>1</tiff:YCbCrPositioning>
<tiff:XResolution>72/1</tiff:XResolution>
<tiff:YResolution>72/1</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:Make>vivo</tiff:Make>
<tiff:Model>vivo X9</tiff:Model>
<exif:ExifVersion>0220</exif:ExifVersion>
<exif:FlashpixVersion>0100</exif:FlashpixVersion>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:ComponentsConfiguration>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>0</rdf:li>
</rdf:Seq>
</exif:ComponentsConfiguration>
<exif:PixelXDimension>3456</exif:PixelXDimension>
<exif:PixelYDimension>4608</exif:PixelYDimension>
<exif:DateTimeOriginal>2018-08-02T14:48:14</exif:DateTimeOriginal>
<exif:ExposureTime>10/333</exif:ExposureTime>
<exif:FNumber>200/100</exif:FNumber>
<exif:ExposureProgram>0</exif:ExposureProgram>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>320</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:ShutterSpeedValue>5058/1000</exif:ShutterSpeedValue>
<exif:ApertureValue>2000000/1000000</exif:ApertureValue>
<exif:BrightnessValue>34/100</exif:BrightnessValue>
<exif:MeteringMode>2</exif:MeteringMode>
<exif:Flash rdf:parseType="Resource">
<exif:Fired>False</exif:Fired>
<exif:Return>0</exif:Return>
<exif:Mode>0</exif:Mode>
<exif:Function>False</exif:Function>
<exif:RedEyeMode>False</exif:RedEyeMode>
</exif:Flash>
<exif:FocalLength>388/100</exif:FocalLength>
<exif:SensingMethod>2</exif:SensingMethod>
<exif:SceneType>1</exif:SceneType>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:WhiteBalance>0</exif:WhiteBalance>
<exif:FocalLengthIn35mmFilm>26</exif:FocalLengthIn35mmFilm>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:SubSecTime>666509</exif:SubSecTime>
<exif:SubSecTimeOriginal>666509</exif:SubSecTimeOriginal>
<exif:SubSecTimeDigitized>666509</exif:SubSecTimeDigitized>
<exif:GPSAltitudeRef>200/100</exif:GPSAltitudeRef>
<exif:GPSTimeStamp>2018-08-02T06:48:14Z</exif:GPSTimeStamp>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

Pixel 2 前置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:GCamera="http://ns.google.com/photos/1.0/camera/"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:aux="http://ns.adobe.com/exif/1.0/aux/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<GCamera:MicroVideo>1</GCamera:MicroVideo>
<GCamera:MicroVideoVersion>1</GCamera:MicroVideoVersion>
<GCamera:MicroVideoOffset>1691842</GCamera:MicroVideoOffset>
<GCamera:MicroVideoPresentationTimestampUs>233612</GCamera:MicroVideoPresentationTimestampUs>
<xmp:CreatorTool>HDR+ 1.0.198487984zb</xmp:CreatorTool>
<xmp:ModifyDate>2018-08-02T14:41:39.404620</xmp:ModifyDate>
<xmp:CreateDate>2018-08-02T14:41:39</xmp:CreateDate>
<xmp:MetadataDate>2018-08-02T14:41:39.404620</xmp:MetadataDate>
<aux:ApproximateFocusDistance>0/1</aux:ApproximateFocusDistance>
<photoshop:DateCreated>2018-08-02T14:41:40.807294336</photoshop:DateCreated>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
<xmpMM:DocumentID>4B7EC3C4B26F6A5AF1C59D786A893518</xmpMM:DocumentID>
<xmpMM:InstanceID>4B7EC3C4B26F6A5AF1C59D786A893518</xmpMM:InstanceID>
<dc:format>image/jpeg</dc:format>
<tiff:ImageWidth>3264</tiff:ImageWidth>
<tiff:ImageLength>2448</tiff:ImageLength>
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
<tiff:Orientation>1</tiff:Orientation>
<tiff:SamplesPerPixel>3</tiff:SamplesPerPixel>
<tiff:YCbCrPositioning>1</tiff:YCbCrPositioning>
<tiff:XResolution>72/1</tiff:XResolution>
<tiff:YResolution>72/1</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:Make>Google</tiff:Make>
<tiff:Model>Pixel 2</tiff:Model>
<exif:ExifVersion>0220</exif:ExifVersion>
<exif:FlashpixVersion>0100</exif:FlashpixVersion>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:PixelXDimension>3264</exif:PixelXDimension>
<exif:PixelYDimension>2448</exif:PixelYDimension>
<exif:DateTimeOriginal>2018-08-02T14:41:39</exif:DateTimeOriginal>
<exif:ExposureTime>33333/1000000</exif:ExposureTime>
<exif:FNumber>240/100</exif:FNumber>
<exif:ExposureProgram>2</exif:ExposureProgram>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>119</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:ShutterSpeedValue>491/100</exif:ShutterSpeedValue>
<exif:ApertureValue>2526069/1000000</exif:ApertureValue>
<exif:BrightnessValue>218/100</exif:BrightnessValue>
<exif:ExposureBiasValue>0/6</exif:ExposureBiasValue>
<exif:MaxApertureValue>253/100</exif:MaxApertureValue>
<exif:SubjectDistance>0/1</exif:SubjectDistance>
<exif:MeteringMode>2</exif:MeteringMode>
<exif:Flash rdf:parseType="Resource">
<exif:Fired>False</exif:Fired>
<exif:Return>0</exif:Return>
<exif:Mode>2</exif:Mode>
<exif:Function>False</exif:Function>
<exif:RedEyeMode>False</exif:RedEyeMode>
</exif:Flash>
<exif:FocalLength>3380/1000</exif:FocalLength>
<exif:SensingMethod>2</exif:SensingMethod>
<exif:SceneType>1</exif:SceneType>
<exif:CustomRendered>1</exif:CustomRendered>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:WhiteBalance>0</exif:WhiteBalance>
<exif:DigitalZoomRatio>0/1</exif:DigitalZoomRatio>
<exif:FocalLengthIn35mmFilm>25</exif:FocalLengthIn35mmFilm>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:Contrast>0</exif:Contrast>
<exif:Saturation>0</exif:Saturation>
<exif:Sharpness>0</exif:Sharpness>
<exif:SubjectDistanceRange>0</exif:SubjectDistanceRange>
<exif:SubSecTime>404620</exif:SubSecTime>
<exif:SubSecTimeOriginal>404620</exif:SubSecTimeOriginal>
<exif:SubSecTimeDigitized>404620</exif:SubSecTimeDigitized>
<exif:GPSVersionID>2.2.0.0</exif:GPSVersionID>
<exif:GPSLatitude>31,12.826N</exif:GPSLatitude>
<exif:GPSLongitude>121,27.1655E</exif:GPSLongitude>
<exif:GPSAltitudeRef>0</exif:GPSAltitudeRef>
<exif:GPSAltitude>3220/100</exif:GPSAltitude>
<exif:GPSTimeStamp>2018-08-02T06:41:29Z</exif:GPSTimeStamp>
<exif:GPSDOP>15812/1000</exif:GPSDOP>
<exif:GPSProcessingMethods>fused</exif:GPSProcessingMethods>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

Pixel 2 后置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:GCamera="http://ns.google.com/photos/1.0/camera/"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:aux="http://ns.adobe.com/exif/1.0/aux/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<GCamera:MicroVideo>1</GCamera:MicroVideo>
<GCamera:MicroVideoVersion>1</GCamera:MicroVideoVersion>
<GCamera:MicroVideoOffset>2470328</GCamera:MicroVideoOffset>
<GCamera:MicroVideoPresentationTimestampUs>799652</GCamera:MicroVideoPresentationTimestampUs>
<xmp:CreatorTool>HDR+ 1.0.198487984z</xmp:CreatorTool>
<xmp:ModifyDate>2018-08-02T14:41:46.148686</xmp:ModifyDate>
<xmp:CreateDate>2018-08-02T14:41:46</xmp:CreateDate>
<xmp:MetadataDate>2018-08-02T14:41:46.148686</xmp:MetadataDate>
<aux:ApproximateFocusDistance>588/1000</aux:ApproximateFocusDistance>
<photoshop:DateCreated>2018-08-02T14:41:44.36214464</photoshop:DateCreated>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
<xmpMM:DocumentID>C6041F60CBB2044037D860457E7203A4</xmpMM:DocumentID>
<xmpMM:InstanceID>C6041F60CBB2044037D860457E7203A4</xmpMM:InstanceID>
<dc:format>image/jpeg</dc:format>
<tiff:ImageWidth>3024</tiff:ImageWidth>
<tiff:ImageLength>4032</tiff:ImageLength>
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
<tiff:Orientation>1</tiff:Orientation>
<tiff:SamplesPerPixel>3</tiff:SamplesPerPixel>
<tiff:YCbCrPositioning>1</tiff:YCbCrPositioning>
<tiff:XResolution>72/1</tiff:XResolution>
<tiff:YResolution>72/1</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:Make>Google</tiff:Make>
<tiff:Model>Pixel 2</tiff:Model>
<exif:ExifVersion>0220</exif:ExifVersion>
<exif:FlashpixVersion>0100</exif:FlashpixVersion>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:PixelXDimension>3024</exif:PixelXDimension>
<exif:PixelYDimension>4032</exif:PixelYDimension>
<exif:DateTimeOriginal>2018-08-02T14:41:46</exif:DateTimeOriginal>
<exif:ExposureTime>10002/1000000</exif:ExposureTime>
<exif:FNumber>180/100</exif:FNumber>
<exif:ExposureProgram>2</exif:ExposureProgram>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>127</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:ShutterSpeedValue>664/100</exif:ShutterSpeedValue>
<exif:ApertureValue>1695994/1000000</exif:ApertureValue>
<exif:BrightnessValue>299/100</exif:BrightnessValue>
<exif:ExposureBiasValue>0/6</exif:ExposureBiasValue>
<exif:MaxApertureValue>170/100</exif:MaxApertureValue>
<exif:SubjectDistance>588/1000</exif:SubjectDistance>
<exif:MeteringMode>2</exif:MeteringMode>
<exif:Flash rdf:parseType="Resource">
<exif:Fired>False</exif:Fired>
<exif:Return>0</exif:Return>
<exif:Mode>2</exif:Mode>
<exif:Function>False</exif:Function>
<exif:RedEyeMode>False</exif:RedEyeMode>
</exif:Flash>
<exif:FocalLength>4442/1000</exif:FocalLength>
<exif:SensingMethod>2</exif:SensingMethod>
<exif:SceneType>1</exif:SceneType>
<exif:CustomRendered>1</exif:CustomRendered>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:WhiteBalance>0</exif:WhiteBalance>
<exif:DigitalZoomRatio>0/1</exif:DigitalZoomRatio>
<exif:FocalLengthIn35mmFilm>27</exif:FocalLengthIn35mmFilm>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:Contrast>0</exif:Contrast>
<exif:Saturation>0</exif:Saturation>
<exif:Sharpness>0</exif:Sharpness>
<exif:SubjectDistanceRange>1</exif:SubjectDistanceRange>
<exif:SubSecTime>148686</exif:SubSecTime>
<exif:SubSecTimeOriginal>148686</exif:SubSecTimeOriginal>
<exif:SubSecTimeDigitized>148686</exif:SubSecTimeDigitized>
<exif:GPSVersionID>2.2.0.0</exif:GPSVersionID>
<exif:GPSLatitude>31,12.826N</exif:GPSLatitude>
<exif:GPSLongitude>121,27.1655E</exif:GPSLongitude>
<exif:GPSAltitudeRef>0</exif:GPSAltitudeRef>
<exif:GPSAltitude>3220/100</exif:GPSAltitude>
<exif:GPSTimeStamp>2018-08-02T06:41:29Z</exif:GPSTimeStamp>
<exif:GPSDOP>15812/1000</exif:GPSDOP>
<exif:GPSProcessingMethods>fused</exif:GPSProcessingMethods>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

红米 5 Plus 前置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<xmp:CreatorTool>vince-user 7.1.2 N2G47H 8.7.12 release-keys</xmp:CreatorTool>
<xmp:ModifyDate>2018-08-02T15:50:10.111306</xmp:ModifyDate>
<xmp:CreateDate>2018-08-02T15:50:10</xmp:CreateDate>
<xmp:MetadataDate>2018-08-02T15:50:10.111306</xmp:MetadataDate>
<photoshop:DateCreated>2018-08-02T15:50:09.636850304</photoshop:DateCreated>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
<xmpMM:DocumentID>CDE79A1CEBA00CD1FC459DBA269EF0B4</xmpMM:DocumentID>
<xmpMM:InstanceID>CDE79A1CEBA00CD1FC459DBA269EF0B4</xmpMM:InstanceID>
<dc:format>image/jpeg</dc:format>
<tiff:ImageWidth>1944</tiff:ImageWidth>
<tiff:ImageLength>2592</tiff:ImageLength>
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
<tiff:Orientation>1</tiff:Orientation>
<tiff:SamplesPerPixel>3</tiff:SamplesPerPixel>
<tiff:YCbCrPositioning>1</tiff:YCbCrPositioning>
<tiff:XResolution>72/1</tiff:XResolution>
<tiff:YResolution>72/1</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:Make>Xiaomi</tiff:Make>
<tiff:Model>Redmi 5 Plus</tiff:Model>
<exif:ExifVersion>0220</exif:ExifVersion>
<exif:FlashpixVersion>0100</exif:FlashpixVersion>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:ComponentsConfiguration>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>0</rdf:li>
</rdf:Seq>
</exif:ComponentsConfiguration>
<exif:PixelXDimension>2592</exif:PixelXDimension>
<exif:PixelYDimension>1944</exif:PixelYDimension>
<exif:DateTimeOriginal>2018-08-02T15:50:10</exif:DateTimeOriginal>
<exif:ExposureTime>1/33</exif:ExposureTime>
<exif:FNumber>200/100</exif:FNumber>
<exif:ExposureProgram>0</exif:ExposureProgram>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>242</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:ShutterSpeedValue>5058/1000</exif:ShutterSpeedValue>
<exif:ApertureValue>2000000/1000000</exif:ApertureValue>
<exif:BrightnessValue>62/100</exif:BrightnessValue>
<exif:MeteringMode>2</exif:MeteringMode>
<exif:Flash rdf:parseType="Resource">
<exif:Fired>False</exif:Fired>
<exif:Return>0</exif:Return>
<exif:Mode>2</exif:Mode>
<exif:Function>False</exif:Function>
<exif:RedEyeMode>False</exif:RedEyeMode>
</exif:Flash>
<exif:FocalLength>2639/1000</exif:FocalLength>
<exif:SensingMethod>2</exif:SensingMethod>
<exif:SceneType>1</exif:SceneType>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:WhiteBalance>0</exif:WhiteBalance>
<exif:FocalLengthIn35mmFilm>3</exif:FocalLengthIn35mmFilm>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:SubSecTime>111306</exif:SubSecTime>
<exif:SubSecTimeOriginal>111306</exif:SubSecTimeOriginal>
<exif:SubSecTimeDigitized>111306</exif:SubSecTimeDigitized>
<exif:GPSAltitudeRef>200/100</exif:GPSAltitudeRef>
<exif:GPSTimeStamp>2018-08-02T07:50:09Z</exif:GPSTimeStamp>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

红米 5 Plus 后置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/">
<xmp:CreatorTool>vince-user 7.1.2 N2G47H 8.7.12 release-keys</xmp:CreatorTool>
<xmp:ModifyDate>2018-08-02T15:49:54.799201</xmp:ModifyDate>
<xmp:CreateDate>2018-08-02T15:49:54</xmp:CreateDate>
<xmp:MetadataDate>2018-08-02T15:49:54.799201</xmp:MetadataDate>
<photoshop:DateCreated>2018-08-02T15:49:54.337082944</photoshop:DateCreated>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:ICCProfile>sRGB IEC61966-2.1</photoshop:ICCProfile>
<xmpMM:DocumentID>DCE86D08DEBFAFC48F5631CDA52CCB7E</xmpMM:DocumentID>
<xmpMM:InstanceID>DCE86D08DEBFAFC48F5631CDA52CCB7E</xmpMM:InstanceID>
<dc:format>image/jpeg</dc:format>
<tiff:ImageWidth>3000</tiff:ImageWidth>
<tiff:ImageLength>4000</tiff:ImageLength>
<tiff:BitsPerSample>
<rdf:Seq>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
<rdf:li>8</rdf:li>
</rdf:Seq>
</tiff:BitsPerSample>
<tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
<tiff:Orientation>1</tiff:Orientation>
<tiff:SamplesPerPixel>3</tiff:SamplesPerPixel>
<tiff:YCbCrPositioning>1</tiff:YCbCrPositioning>
<tiff:XResolution>72/1</tiff:XResolution>
<tiff:YResolution>72/1</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:Make>Xiaomi</tiff:Make>
<tiff:Model>Redmi 5 Plus</tiff:Model>
<exif:ExifVersion>0220</exif:ExifVersion>
<exif:FlashpixVersion>0100</exif:FlashpixVersion>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:ComponentsConfiguration>
<rdf:Seq>
<rdf:li>1</rdf:li>
<rdf:li>2</rdf:li>
<rdf:li>3</rdf:li>
<rdf:li>0</rdf:li>
</rdf:Seq>
</exif:ComponentsConfiguration>
<exif:PixelXDimension>4000</exif:PixelXDimension>
<exif:PixelYDimension>3000</exif:PixelYDimension>
<exif:DateTimeOriginal>2018-08-02T15:49:54</exif:DateTimeOriginal>
<exif:ExposureTime>1/50</exif:ExposureTime>
<exif:FNumber>220/100</exif:FNumber>
<exif:ExposureProgram>0</exif:ExposureProgram>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>400</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:ShutterSpeedValue>5643/1000</exif:ShutterSpeedValue>
<exif:ApertureValue>2275007/1000000</exif:ApertureValue>
<exif:BrightnessValue>96/100</exif:BrightnessValue>
<exif:MeteringMode>2</exif:MeteringMode>
<exif:Flash rdf:parseType="Resource">
<exif:Fired>False</exif:Fired>
<exif:Return>0</exif:Return>
<exif:Mode>2</exif:Mode>
<exif:Function>False</exif:Function>
<exif:RedEyeMode>False</exif:RedEyeMode>
</exif:Flash>
<exif:FocalLength>3819/1000</exif:FocalLength>
<exif:SensingMethod>2</exif:SensingMethod>
<exif:SceneType>1</exif:SceneType>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:WhiteBalance>0</exif:WhiteBalance>
<exif:FocalLengthIn35mmFilm>26</exif:FocalLengthIn35mmFilm>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:SubSecTime>799201</exif:SubSecTime>
<exif:SubSecTimeOriginal>799201</exif:SubSecTimeOriginal>
<exif:SubSecTimeDigitized>799201</exif:SubSecTimeDigitized>
<exif:GPSAltitudeRef>220/100</exif:GPSAltitudeRef>
<exif:GPSTimeStamp>2018-08-02T07:49:54Z</exif:GPSTimeStamp>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>

一加可行

由上面的结果可知,目前只有一加在自定义属性中添加了LensFacing用来标记前后置摄像头,其余机型均为有相应字段用来标记前后置摄像头,所以在编码时只针对一加进行编码就行,若后续有其他机型也增加了标记字段,则进行补充编码即可。

编码进行时

由于时间紧迫,加上重复造轮子过于复杂和耗时,我选择了metadata-extractor这个库,具体使用与示例请参照对应wiki及源码,这里贴个简陋的Demo的MainActivity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package com.kaithmy.metadatademo

import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import com.adobe.xmp.properties.XMPPropertyInfo
import com.drew.imaging.ImageMetadataReader
import com.drew.metadata.xmp.XmpDirectory
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
val IMAGE_PICKER_REQUESTCODE = 10086

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)

fab.setOnClickListener { view ->
val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.type = "image/*"
startActivityForResult(intent, IMAGE_PICKER_REQUESTCODE)
}
}

override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_main, menu)
return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
return when (item.itemId) {
R.id.action_settings -> true
else -> super.onOptionsItemSelected(item)
}
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == IMAGE_PICKER_REQUESTCODE) {
if (data == null) return
val uri = data.data
try {
val openInputStream = contentResolver.openInputStream(uri)
val metadata = ImageMetadataReader.readMetadata(openInputStream)
val xmpDirectory = metadata.getDirectoriesOfType(XmpDirectory::class.java)
xmpDirectory.forEach {
val xmpMeta = it.xmpMeta
for (any in xmpMeta) {
if (any is XMPPropertyInfo && "OPMedia:LensFacing" == any.path) {
if ("Front" == any.value) {
Toast.makeText(this, "Front", Toast.LENGTH_LONG).show()
}
if ("Back" == any.value) {
Toast.makeText(this, "Back", Toast.LENGTH_LONG).show()
}
}
}
}
} catch (e: Exception) {
e.printStackTrace()
}
}
}
}

突发情况?

程序在其他手机上跑的好好的,突然在魅族6 Note上突然崩溃了,报错信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.kaithmy.metadatademo, PID: 26896
java.lang.NoSuchMethodError: No interface method getValue()Ljava/lang/String; in class Lcom/adobe/xmp/properties/XMPPropertyInfo; or its super classes (declaration of 'com.adobe.xmp.properties.XMPPropertyInfo' appears in /system/framework/framework.jar:classes2.dex)
at com.kaithmy.metadatademo.MainActivity.onActivityResult(MainActivity.kt:57)
at android.app.Activity.dispatchActivityResult(Activity.java:7060)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4279)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4326)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1640)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6321)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:939)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:829)

接口类方法getValue找不到?,吓得我赶紧点进去看了看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2006 Adobe Systems Incorporated
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// =================================================================================================

package com.adobe.xmp.properties;

import com.adobe.xmp.options.PropertyOptions;


/**
* This interface is used to return a property together with its path and namespace.
* It is returned when properties are iterated with the <code>XMPIterator</code>.
*
* @since 06.07.2006
*/
public interface XMPPropertyInfo extends XMPProperty
{
/**
* @return Returns the namespace of the property
*/
String getNamespace();


/**
* @return Returns the path of the property, but only if returned by the iterator.
*/
String getPath();


/**
* @return Returns the value of the property.
*/
String getValue();


/**
* @return Returns the options of the property.
*/
PropertyOptions getOptions();
}

其中getValue()getOptions()继承自接口XMPProperty

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2006 Adobe Systems Incorporated
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// =================================================================================================

package com.adobe.xmp.properties;

import com.adobe.xmp.XMPMeta;
import com.adobe.xmp.options.PropertyOptions;


/**
* This interface is used to return a text property together with its and options.
*
* @since 23.01.2006
*/
public interface XMPProperty
{
/**
* @return Returns the value of the property.
*/
String getValue();


/**
* @return Returns the options of the property.
*/
PropertyOptions getOptions();


/**
* Only set by {@link XMPMeta#getLocalizedText(String, String, String, String)}.
* @return Returns the language of the alt-text item.
*/
String getLanguage();
}

明明有啊,这不坑爹嘛这是!难道是混淆了?于是在混淆配置文件中添加了-keep class com.adobe.xmp.** { *; },结果还是没用。查看一下生成的apk中的dex里有没有

是有的,那为什么会找不到呢?看了看错误中的/system/framework/framework.jar,立即将framework.jar从手机中导了出来,但是里面居然是空的,只有个文件夹META-INF中包含一个MANIFEST.MF文件,那么问题也不在这里。仔细想了想,会不会是因为是魅族改过framework层呢,或者说是手机被root过而受了影响呢?于是乎借了一部root过的Nexus 5装上了验证Demo进行测试,结果是能正常运行并展示结果,由此排除了受root而导致的接口方法找不到。

结语

基于以上验证结果,浅显地认为是魅族的ROM导致的吧ㄟ( ▔, ▔ )ㄏ

博主 wechat
冰糖可乐柠檬茶,可爱的女士喝点啥?喝点啥?
喜欢的话就给予一点支持吧(*/ω\*)