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

How to uniquely identify an image, created by Android camera?

我正在构建自己的图像备份应用程序,使用 PHP 和 Nativescript。该应用程序将很简单,并且允许我 manually/automatically 将相机中的任何图像上传到服务器。

问题是,我需要以某种方式 "identify" 每张图片,让应用知道特定图片是否已经备份。 这应该可以处理这样一种情况,我手动将图像从一个 phone 移动到一个新图像,然后再次在那个新 phone 上安装应用程序。我的后端如何识别这张图片已经备份?,我认为依赖名称不是一个好主意。到目前为止我所做的是:

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

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

每次上传图片时,我都会用它来检查是否有这样的图片"already exists"。例如,如果两个图像具有相同的名称,这将失败。

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

您可以创建图像文件的 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 哈希实际上保证是唯一的,只要您哈希的图像部分不同。