如何唯一识别由Android相机创建的图像?

时间:2019-05-07 17:55:36

标签: php android android-image uniqueidentifier

我正在使用PHP和Nativescript构建自己的图像备份应用程序。该应用程序非常简单,可以让我手动/自动将相机中的任何图像上传到服务器。

问题是,我需要以某种方式“识别”每个图像,让应用程序知道是否已经备份了特定图像。 这应该解决以下情况:我将图像从一部手机手动移动到新一部手机,然后在新手机上再次安装该应用程序。我的后端怎么会知道这张照片已经备份了?,我不认为依靠这个名字是个好主意。到目前为止,我所做的是:

我创建一个字符串,该字符串是图像大小和名称的组合:

public function createFileIdentifier(String $fileSize, String $fileName): String
    {
        return '_' . $fileSize . '_' . $fileName;
    }  

每次上传图片时,我都会用它来检查这样的图片“已经存在”。例如,如果两个图像具有相同的名称,则将失败。

Android是否为相机拍摄的每张照片创建了100%唯一的元数据,我可以使用它?还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

您可以创建图像文件的hash,并使用该文件唯一地标识图像的内容。在这种情况下,即使是MD5哈希也可以,而且速度非常快。

public function createFileIdentifier(String $fileName): String
{
   // read only the first megabyte
   $content = file_get_contents($fileName, FALSE, 0, 1024*1024);
   // make a simple hash
   return md5($content);
}  

只要您哈希的图像部分不同,实际上就可以保证MD5哈希是唯一的。