Встраивать данные в файл 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 библиотечная документация.

Надеюсь, это поможет тебе

Другие вопросы по тегам