2014-10-16 3 views
1

Я использую API, который извлекает носители, но API возвращает носитель в виде байта ... Я хочу сохранить байтовое изображение как изображение. Как мне это сделать?Bytestring to Image в python

я попытался это:

data = *bytestring* 

f = open('image.jpg','w') 
f.write(str(data)) 
f.close() 

и это успешно компилируется, но когда я проверяю image.jpg ... он пуст или «не может быть открыт, потому что это неизвестный формат»

+1

не используйте 'Str()'. Это может привести к повреждению данных на Python 3. Бесполезно на Python 2, если 'data' является байтовым. – jfs

ответ

2

Try:

f = open('image.jpg','wb') 
f.write(data) 
f.close() 

Почему? По умолчанию строка преобразования python заканчивается тем, что используется платформой underling (например, в окнах, она конвертирует '\n' в '\n\r'), что приведет к зависанию файла.

Он всегда рассматривает файлы как текстовые файлы, если вы не указали явно его двоичный файл, добавив опцию 'b' в open(). Если вы используете опцию «b», она не будет конвертировать концы строк.

И для синтаксического аспекта, это способ лучше писать (он будет закрывать файл, даже в случае исключения):

with open('image.jpg','wb') as f: 
    f.write(data) 
+1

J.F. Себастьян прав, меняя мой ответ. – Antoine

+0

hm, это дает мне TypeError и говорит, что «должно быть строкой или буфером, а не bool» ... Я не понимаю, почему? API возвращает байтовую строку следующим образом: «1413467782965», и я набрал ваш ответ точно – shreyashirday

+0

nevermind Я получил его, спасибо! – shreyashirday

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

  • Нет связанных вопросов^_^