Как получить хэш полезной нагрузки контейнера цифровых фотографий, в идеале на Java?
Я отредактировал свойства EXIF на цифровых фотографиях и хотел бы иметь возможность идентифицировать их как идентичные. Я считаю, что это подразумевает извлечение потока полезной нагрузки и вычисление хэша. Что является лучшим способом сделать это, в идеале на языке Java, в идеале на Java с использованием собственной реализации для повышения производительности.
1 ответ
Файлы JPEG представляют собой серию "сегментов". Некоторые содержат данные изображения, другие нет.
Данные Exif хранятся в сегменте APP1. Вы можете написать некоторый код, чтобы сравнить другие сегменты, и посмотреть, совпадают ли они. Хеш кажется разумным подходом здесь. Например, вы можете сравнить хэш только сегментов SOI, DQT или DHT. Вам нужно поэкспериментировать, чтобы увидеть, какой из них дает лучший результат.
Проверьте JpegSegmentReader
класс из моей библиотеки экстрактора метаданных.
- Java: https://github.com/drewnoakes/metadata-extractor
- .NET: https://github.com/drewnoakes/metadata-extractor-dotnet
С этим классом вы можете извлечь определенные сегменты из JPEG для обработки.
Дайте нам знать, как вы поживаете!