"raw image data, as a byte string" 是什么意思?

What does "raw image data, as a byte string" mean?

我正在做一个程序来使用 Python 编辑 mp3 上的标签,现在我正在使用 mutagen 模块,为了使用我拥有的 id3v4 标准将图像作为封面艺术嵌入到 mp3 文件中添加 APIC 框架 using this.

但我不明白我必须在参数 encodingmimedata.

中输入什么

我从这里看了一个例子并想出了这个:

frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg"))

但是我不知道前3个是什么意思?为什么当我输入 "utf-8" 它不起作用? open() 函数不起作用,它 returns 像这样的错误:

Traceback (most recent call last):
  File "<pyshell#104>", line 1, in <module>
    frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg"))
  File "C:\Python34\lib\site-packages\mutagen\id3\_frames.py", line 65, in __init__
    setattr(self, checker.name, checker.validate(self, val))
  File "C:\Python34\lib\site-packages\mutagen\id3\_specs.py", line 184, in validate
    raise TypeError("%s has to be bytes" % self.name)
TypeError: data has to be bytes

当我把 "b"

frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg","b"))

它returns

Traceback (most recent call last):
  File "<pyshell#106>", line 1, in <module>
    frame= APIC("utf-8","image/jpg",3,"Cover",open("albumcover.jpg","b"))
ValueError: Must have exactly one of create/read/write/append mode and at most one plus

那我应该放什么?

我也试过 open("albumcover.jpg").read() 但没用。

您需要以 - read (rb) 或 write (wb) 或 append (ab) 模式之一打开文件(b - 表明它是一个二进制文件文件,我们从中读取字节而不是字符串)。

对于你的情况,我认为 read 模式就足够了,所以试试 -

frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg","rb").read())

rb 表示我们需要以读取模式打开文件并且它是一个二进制文件,对其调用 .read() 函数使其从文件中读取字节并且return它。

参数3表示专辑封面,read the documentation