我正在使用 Expo 中的 ImagePicker 从相机胶卷中导入图像。然后我想显示图像中选择的 exif 和元数据以及照片。这样就可以了:
const pickImage = async () => {
let result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.All,
allowsEditing: true,
aspect: [4, 3],
quality: 1,
exif: true,
});
console.log(result.exif);
我得到的输出是:
Object {
"ApertureValue": 6,
"BodySerialNumber": "1234********",
"ColorSpace": 65535,
"CustomRendered": 0,
"DateTimeDigitized": "2021:01:21 16:23:06",
"DateTimeOriginal": "2021:01:21 16:23:06",
"ExifVersion": Array [
2,
3,
1,
],
"ExposureBiasValue": 0,
"ExposureMode": 1,
"ExposureProgram": 1,
"ExposureTime": 0.005,
"FNumber": 8,
"Flash": 16,
"FocalLength": 34,
"FocalPlaneResolutionUnit": 3,
"FocalPlaneXResolution": 1866.6666564941406,
"FocalPlaneYResolution": 1866.6666564941406,
"ISOSpeedRatings": Array [
800,
],
"LensModel": "EF16-35mm f/2.8L USM",
"LensSerialNumber": "0000000000",
"LensSpecification": Array [
16,
35,
0,
0,
],
"MaxApertureValue": 3,
"MeteringMode": 5,
"Orientation": 1,
"PixelXDimension": 1000,
"PixelYDimension": 667,
"RecommendedExposureIndex": 800,
"SceneCaptureType": 0,
"SensitivityType": 2,
"ShutterSpeedValue": 7.643856,
"SubsecTime": "28",
"SubsecTimeDigitized": "28",
"SubsecTimeOriginal": "28",
"WhiteBalance": 1,
}
虽然实际的 exif 描述与在 Photoshop>文件>文件信息中查看的同一图像不同,但这不是主要问题。
问题是我想要访问各种非 exif 的元数据。例如,虽然我可以获取所使用的镜头类型,但如果没有此元数据,我无法获取所使用的相机类型:
<tiff:Model>Canon EOS 5D Mark IV</tiff:Model>
这不是 exif,而是 tiff 元数据。
我想访问的其他元数据包括相机所有者姓名(如果他们提供了该信息)和大致焦距等。或者(虽然在某些情况下存在隐私问题)可选包含 GPS 位置数据。
所有这些都在图像元数据中,只是没有 exif。
如何在 Expo 管理的 React Native 项目中访问图像中的所有元数据,或者至少访问 tiff 和 exif?
你找到答案了吗?我目前正在开展一个项目,试图解决这个问题。