Python将字节文本转换为Imag

2024-05-13 10:19:58 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python3中,我正在开发一个音乐播放应用程序。我正在使用一个名为TinyTag的库从音乐文件中获取元数据,比如标题和艺术家。它还支持获取专辑艺术。当检索到艺术品时,它将加载为我认为的字节文字(我不熟悉)。我想知道如何将这些数据转换成图像。代码如下:

from tinytag import TinyTag
tag = TinyTag.get("/path/to/file.mp3", image=True)
image_data = tag.get_image()
print(image_data)

图像数据是以字母“b”开头的一个巨大的刺。看起来像这样:

^{pr2}$

但要长得多。如何将其转换为相册封面图像。需要什么样的图书馆?如何做到?在


Tags: 数据图像image应用程序标题dataget音乐
1条回答
网友
1楼 · 发布于 2024-05-13 10:19:58

您看到的字符串是图像文件的内容。您只需将字符串直接保存到文件中:

$ file /tmp/file.mp3
/tmp/file.mp3: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, JntStereo
$ ipython
Python 2.7.12 (default, Aug  9 2016, 15:48:18) 
Type "copyright", "credits" or "license" for more information.

IPython 3.2.1   An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: from tinytag import TinyTag

In [2]: tag = TinyTag.get("/tmp/file.mp3", image=True)

In [3]: image_data = tag.get_image()

In [4]: type(image_data)
Out[4]: str

In [5]: image_data[:20]
Out[5]: '\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00'

In [6]: with open("/tmp/album_art.jpg", "w") as f:
   ...:     f.write(image_data)
   ...:   

In [7]: exit()
$ file /tmp/album_art.jpg
/tmp/album_art.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 72x72, segment length 16, Exif Standard: [TIFF image data, big-endian, direntries=7, orientation=upper-left, xresolution=98, yresolution=106, resolutionunit=2, software=Adobe Photoshop CS2 Windows, datetime=2008:04:02 00:23:04], baseline, precision 8, 320x300, frames 3

如果使用python3,则必须在模式中显式指定'wb',因为您得到的是字节流:

^{pr2}$

相关问题 更多 >