将二进制图像数据转换为图像并在HTML中显示



我正在与Musicbrainsngs -Python lib合作。要求一些专辑粉艺术品。

import musicbrainzngs as mb
release_group_ID = '5c14fd50-a2f1-3672-9537-b0dad91bea2f'
artwork = mb.get_release_group_image_front(release_group_ID)
print(artwork)

文档说将返回字符串中的"二进制图像数据"。

我为您提出的问题:这是什么类型的数据(基本64编码的PNG?我怎么说?(

,但更重要的是 - 我该怎么办?如何将其保存为图像,或用HTML显示为图像?

图像数据是1mm字符 - 这是开始的简短示例:

b'x16x00xe0}xc1x17xfb_U{Rxd43uLxbfxe33xec3e(,xa7px00xa2+x02   x9cx92xb6x0bx00x07xf9xxeaaxd5x99 ixab$xe2x92xa3Coxb9`xb9x1cdx911x01[x0cxd0x9cxaax81x08Q|x13xe4xd9:cxa47xfexca*qxf5xd4Oxeax0fix9cxccxf8ux88x0bx16x11m?#Fx9dx9axe8}I&xfexb5]txcfxf0x1fxebxcex9dxa4iy^x8bxf7;2cdexacxd0xc9x12x7f<I$)rIx90xe3jxc2!Dxdbgxfe&xf2:"rl;)x98nx80x9e x1fSx8ex87xcexaaxe0x8axc2x9b'

确实看起来API不填充此信息。

替代1

只需按原样获取二进制数据,然后将其写入文件(以二进制模式(。然后使用魔术(libmagic包装器(来确定MIME类型。并将其重命名。

#! /usr/bin/python
# -*- coding: utf-8 -*-
import musicbrainzngs as mb
import magic
import os
release_group_ID = '5c14fd50-a2f1-3672-9537-b0dad91bea2f'
artwork = mb.get_release_group_image_front(release_group_ID)
result_file = 'result_file'
with open(result_file, 'wb') as file_handler:
    file_handler.write(artwork)
mime = magic.Magic(mime=True)
mime_type = mime.from_file(result_file)
if mime_type == 'image/jpeg':
    os.rename(result_file, result_file + '.jpg')
elif mime_type == 'image/png':
    os.rename(result_file, result_file + '.png')
elif mime_type == 'image/gif':
    os.rename(result_file, result_file + '.gif')
elif mime_type == 'image/bmp':
    os.rename(result_file, result_file + '.bmp')
elif mime_type == 'image/tiff':
    os.rename(result_file, result_file + '.tiff')
else:
    print('Not an image? %s' % mime_type)

替代2

再次将二进制数据按原样获取,然后将其写入文件(以二进制模式(。现在,使用 pil 打开它,并以您实际想要的格式保存(PIL不在乎输入映像的格式,并且支持大约80个不同的图像(。然后删除原始文件。

#! /usr/bin/python
# -*- coding: utf-8 -*-
import musicbrainzngs as mb
from PIL import Image
import os
release_group_ID = '5c14fd50-a2f1-3672-9537-b0dad91bea2f'
artwork = mb.get_release_group_image_front(release_group_ID)
result_file = 'result_file'
with open(result_file, 'wb') as file_handler:
    file_handler.write(artwork)
Image.open(result_file).save(result_file + '.png', 'PNG')
os.remove(result_file)

最新更新