Преобразование строки пикселей в изображение python - PullRequest
1 голос
/ 15 апреля 2020

Я расшифровал изображение в кодировке base64 в строку пикселей со следующей строкой кода:

pixelstring = base64.b64decode(imagencoded)

Строка выглядит примерно так: b'u\xabZ\x8af\xa0{\xf8\xe9z\x06\xda\xb1\xee\xb8\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x02\x00\x00\x01\x00\x01\...

Теперь я хотел бы чтобы создать исходную картинку с этими пикселями, мой наивный подход к этому:

with open("picture.jpg","wb") as f:
    f.write(pixelstring)

, однако, когда я пытаюсь открыть картинку, файл кажется поврежденным. Что я делаю не так?

Также я обнаружил в исходном коде сайта, что я получил закодированное в base64 изображение, ширина должна быть 250, а высота = 50.

1 Ответ

0 голосов
/ 15 апреля 2020

У вас есть некоторые посторонние вещи в начале вашей строки. Файлы JPEG начинаются с:

ff d8 ...

Итак, при условии:

str = b'u\xabZ\x8af\xa0{\xf8\xe9z\x06\xda\xb1\xee\xb8\xff\xd8\xff\xe0\x00\x10JFIF\x00...`

Вам необходимо получить байтовую позицию начала JPEG:

offset = str.find(b'\xff\xd8')       # You should get "15"

и затем напишите:

str[offset:]

в ваш файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...