我正在使用PHP和Nativescript构建自己的图像备份应用程序。该应用程序非常简单,可以让我手动/自动将相机中的任何图像上传到服务器。
问题是,我需要以某种方式“识别”每个图像,让应用程序知道是否已经备份了特定图像。 这应该解决以下情况:我将图像从一部手机手动移动到新一部手机,然后在新手机上再次安装该应用程序。我的后端怎么会知道这张照片已经备份了?,我不认为依靠这个名字是个好主意。到目前为止,我所做的是:
我创建一个字符串,该字符串是图像大小和名称的组合:
public function createFileIdentifier(String $fileSize, String $fileName): String
{
return '_' . $fileSize . '_' . $fileName;
}
每次上传图片时,我都会用它来检查这样的图片“已经存在”。例如,如果两个图像具有相同的名称,则将失败。
Android是否为相机拍摄的每张照片创建了100%唯一的元数据,我可以使用它?还有其他想法吗?
答案 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哈希是唯一的。