如何使用React-Native将数据存储在EXIF的自定义标签中并使用Python读取它?

How can I store data in a Custom Tag in EXIF with React-Native and read it with Python?

提问人:Ricardo Goncalves 提问时间:11/13/2023 更新时间:11/13/2023 访问量:25

问:

目标:我需要用相机拍摄照片并在其上存储数据(字符串数组就足够了)。然后,将照片传输到桌面后,我需要检索此数据。

方法:我正在制作一个 React Native 应用程序,我正在使用 Expo Framework。我发现适合在照片上存储数据的方式是存储在照片EXIF上的自定义标签上。我正在使用 Expo-Camera 和 Expo-Media-Library

我正在尝试使用以下代码存储“yolo”和“yoloBuf”标签:

    //Capture Photo
    let takePic = async () => {
        let options = {
          quality: 1,
          base64: true,
          exif: true,
          additionalExif: {
            yolo: 'bigbig',
            yoloBuf: ['yellow', 'watermelon'],
          }
        };
    
        let newPhoto = await cameraRef.current.takePictureAsync(options)
        setPhoto(newPhoto);     
      };
...

    let savePhoto = async () => {

      console.log(photo.exif);  

      MediaLibrary.saveToLibraryAsync(photo.uri).then(() => {
        setPhoto(undefined);
      });
    };

控制台.log(photo.exif)正在打印自定义标签。

但是,在python端,在提取EXIF数据时,我没有看到自定义标签,也没有看到大多数标签。我还在 Windows 上使用了一些软件来检查 EXIF 标签,但我也没有看到它。这让我认为我的问题可能出在React-Native方面。

Awnyway,这是我在 python 中使用的相关代码:

from PIL import Image, ExifTags
from PIL.ExifTags import TAGS, GPSTAGS

def extract_exif(image_path):
    try:
        with Image.open(image_path) as img:
            exif_data = img._getexif()
            if exif_data is not None:
                print("EXIF Data:")
                for tag, value in exif_data.items():
                    tag_name = TAGS.get(tag, tag)
                    print(f"{tag_name}: {value}")

    except Exception as e:
        print(f"Error extracting EXIF data: {e}")

所以,问题:

  1. EXIF是否是照片上用于存储照片上的字符串数组的适当字段?
  2. 我在React-Native方面遗漏了什么吗?我在MediaLibrary.saveToLibraryAsync(photo.uri)上保存照片本身有问题吗?

感谢您的进一步帮助, 里卡多

python react-native expo exif

评论


答: 暂无答案