Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-使用ExifReader从文件中读取EXIF信息的速度非常慢_Android_Image_Android Sqlite_Exif_Android Database - Fatal编程技术网

Android-使用ExifReader从文件中读取EXIF信息的速度非常慢

Android-使用ExifReader从文件中读取EXIF信息的速度非常慢,android,image,android-sqlite,exif,android-database,Android,Image,Android Sqlite,Exif,Android Database,我有一个图像处理应用程序,需要记住哪些照片已经处理。 我提出的解决方案是将给定的字符串(“abc-”)存储到EXIF MAKE标记中。 因此,为了过滤照片,我的应用程序需要读取EXIF MAKE属性,看看它是否包含我的字符串(“abc-”)。 我用下面的代码对它进行了测试,它在一个朋友的手机上用Android 5.1.1 CyanogenMod和1000张照片执行了大约15秒,这是一个非常糟糕的时间 public boolean isAlreadyProcessed(File imageFile

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

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图像元数据?如果没有,有没有比我提到的第二种方法(将图像名称存储在数据库中)更好的方法来实现这一点


谢谢你

“它在一个朋友的手机上用了大约15秒的时间执行,Android 5.1.1 CyanogenMod和1000张照片,这真是一段非常糟糕的时间”——真的吗?每张照片15毫秒是“非常糟糕的时间”?我很惊讶你能这么快把事情办好。“所以我需要将我的数据库备份到云端,并在新设备上恢复”——或者使用现有算法对照片进行一次性扫描。是的,很好,我会尝试一下。非常感谢。哦,对不起。执行过程耗时15秒,拍了12张照片,而不是1000张。这有点不同。我对JPEG文件和EXIF了解不够,无法判断
ExifInterface
是否异常缓慢。照片是相当大的文件,而且闪存存储速度很慢,所以速度不会很快。您可以查看其他EXIF实现,例如。谢谢,我将尝试它,如果它不起作用,我将使用云存储