Как однозначно идентифицировать изображение, созданное камерой Android? - PullRequest
1 голос
/ 07 мая 2019

Я создаю свое собственное приложение для резервного копирования изображений, используя PHP и Nativescript. Приложение будет простым и позволит мне вручную / автоматически загружать любое изображение с моей камеры на сервер.

Проблема в том, что мне нужно как-то «идентифицировать» каждое изображение, чтобы приложение узнало, было ли уже скопировано конкретное изображение. Это должно учитывать сценарий, когда я вручную перемещаю изображения с одного телефона на новый, а затем снова устанавливаю приложение на этот новый телефон. Как бы мой бэкэнд узнал, что эта картинка уже была скопирована? , я не думаю, что полагаться на имя - это хорошая идея. Что я сделал до сих пор, так это:

Я создаю строку, которая представляет собой комбинацию размера изображения и имени:

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

Каждый раз, когда изображение загружается, я использую это, чтобы проверить, существует ли такое изображение "уже". Это может произойти, если два изображения имеют одинаковое имя, например.

Существуют ли какие-либо метаданные, созданные Android для каждого снимка, сделанного камерой, которые на 100% уникальны, которые я мог бы использовать? Есть еще идеи?

1 Ответ

1 голос
/ 07 мая 2019

Вы можете создать хеш файла изображения и использовать его для уникальной идентификации содержимого изображения.В этой ситуации подойдет даже хеш 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 практически гарантированно будут уникальными, если только часть изображения, которую вы хешируете, отличается.

...