#python #image #python-imaging-library
#python #изображение #python-imaging-library
Вопрос:
Я использую модуль tinytags в python для получения обложки mp3-файла и хочу отобразить или сохранить его. Тип возвращаемой переменной отображается как байты. Я пытался возиться с PIL, используя frombytes, но безрезультатно. Есть ли какой-либо способ преобразовать байты в изображение?
from tinytag import TinyTag
tag = TinyTag.get("03. Me, Myself amp; I.mp3", image=True)
img = tag.get_image()
Ответ №1:
На самом деле я получил изображение в формате PNG, когда позвонил tag.get_image()
, но, думаю, вы можете получить JPEG. В любом случае, вы можете обернуть его в a BytesIO
и открыть с помощью PIL / Pillow или отобразить его. Продолжение вашего кода:
from PIL import Image
import io
...
im = tag.get_image()
# Make a PIL Image
pi = Image.open(io.BytesIO(im))
# Save as PNG, or JPEG
pi.save('cover.png')
# Display
pi.show()
Обратите внимание, что вам не обязательно использовать PIL / Pillow. Вы можете просмотреть первые несколько байтов и, если они представляют собой подпись PNG ( x89PNG), сохранить данные как двоичные с расширением PNG. Если подпись имеет формат JPEG ( xff xd8), сохраните данные в двоичном формате с расширением JPEG.