Встраивать данные в файл JPG без изменения изображения в Python
У меня есть 289 байт данных, которые я хочу встроить в файл jpg. Конечно без изменения изображения. Кроме того, я могу извлечь эти данные из изображения, и изображение останется оригинальным. Чтобы доказать оригинальность, хеш-значение (SHA 256) изображения до и после встраивания по-прежнему имеет то же значение.
я пробовал использовать stegano
библиотека и piexif
. это код, который используетpiexif
exif_dict = piexif.load(pathImg + 'testImage.jpg')
exif_dict["thumbnail"] = signature # Signature is the 289 bytes of data
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, pathImg + 'testImage.jpg')
и я получил ошибку piexif._exceptions.InvalidImageDataError: Given data isn't JPEG.
1 ответ
Решение
Я решил это сам и использовал приведенный ниже код, чтобы вставить значение
import piexif
exif_dict = piexif.load('testImageSigned.jpg')
exif_dict["0th"][piexif.ImageIFD.Copyright] = hashValue
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, 'testImageSigned.jpg')
И вот код для извлечения:
exif_dict = piexif.load('testImageSigned.jpg')
hashValue2 = exif_dict["0th"][piexif.ImageIFD.Copyright]
Вот документация по тегу exif и там описывается тип данных.
А вот иpiexif
библиотечная документация.
Надеюсь, это поможет тебе