2011-12-25 2 views
1

Я ищу способ создания уникального хеша для изображений в python и php.Уникальный хэш изображения, который не изменяется, если обновлена ​​информация EXIF ​​

Я думал об использовании сумм md5 для исходного файла, потому что они могут быть сгенерированы быстро, но когда я обновляю информацию EXIF ​​(иногда часовой пояс выключен), он меняет сумму и изменения хэша.

Есть ли другие способы создать хэш для этих файлов, которые не будут меняться при обновлении информации EXIF? Эффективность вызывает беспокойство, поскольку я буду создавать хэши для ~ 500k 30MB изображений.

Возможно, есть способ создать хэш-изображение md5, исключая часть EXIF ​​(я считаю, что она написана в начале файла?) Спасибо заранее. Пример кода оценивается.

ответ

1

В Python вы можете использовать Image.tostring() для вычисления хеша md5 только для данных изображения без метаданных.

import Image 
import hashlib 

img = Image.open(filename).convert('RGBA') 
m=hashlib.md5() 
m.update(img.tostring()) 
print(m.hexdigest()) 
+0

Есть ли способ генерировать идентичный хэш в php? Я использую оба языка в своем приложении. Благодарю. – ensnare

+0

Извините, я не знаю php. – unutbu

+0

Вы можете использовать библиотеку GD php для создания временных jpeg (которые будут удалены exif-данными), а затем получить двоичный файл. В любом случае, это не будет высокоэффективным процессом для 30 МБ изображений ... если у вас не будет огромного объема оперативной памяти, это будет немного медленнее. –

2

Imagemagick уже предоставляет способ получения подписи изображения. Согласно PHP documentation:

Создает дайджест сообщений SHA-256 для потока пикселов изображения.

Так что я понимаю, что изменения в информации об exif не влияют на подпись.

Кроме того, я проверил, что метод PythonMagick.Image.signature доступен в привязках python, поэтому вы должны иметь возможность использовать его на обоих языках.

Смежные вопросы