3

我有一个图像处理应用程序,它需要记住哪些照片已经被处理过。我想出的解决方案是将给定的字符串(“abc-”)存储到 EXIF MAKE 标记中。因此,为了过滤照片,我的应用程序需要读取 EXIF MAKE 属性以查看它是否包含我的字符串(“abc-”)。我用下面的代码对其进行了测试,它在朋友的手机上运行了大约 15 秒,运行 Android 5.1.1 CyanogenMod 和 1000 张照片,这是一个非常糟糕的时间。

public boolean isAlreadyProcessed(File imageFile) {
    android.media.ExifInterface exifInterface = new ExifInterface(imageFile.getAbsolutePath());
    String attribute = exifInterface.getAttribute(ExifInterface.TAG_MAKE);

    return attribute.contains("abc-");
}

我想到的其他解决方案是将处理后的图像文件名存储到 SQLite 数据库中。这将是一个更快的选择,但它的问题是,如果用户将他的照片复制到新设备,我的应用程序将不记得哪些照片已被处理,因此我需要将我的数据库备份到云并恢复它在新设备上。

那么,有没有更高效的方式来读取 EXIF 图像元数据呢?如果没有,有没有比我提到的第二种方法更好的方法(将图像名称存储在数据库中)?

谢谢

4

0 回答 0