“原始图像数据,作为字节字符串”是啥意思?

Posted

技术标签:

【中文标题】“原始图像数据,作为字节字符串”是啥意思?【英文标题】:What does "raw image data, as a byte string" mean?“原始图像数据,作为字节字符串”是什么意思? 【发布时间】:2015-06-25 09:43:23 【问题描述】:

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

但我不明白我必须在参数encodingmimedata 中输入什么。

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

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

但我不知道前 3 个是什么意思?为什么当我输入"utf-8" 时它不起作用?而open() 函数不起作用,它返回如下错误:

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"))

返回

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(),但它不起作用。

【问题讨论】:

字节问题的答案可能是 [我在 Python 3 中遇到的字符串到字节问题] - ***.com/questions/5440485/… 【参考方案1】:

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

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

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

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

【讨论】:

很高兴它对您有用,建议您接受答案,因为这将帮助可能有类似问题的其他人以及整个社区(不仅仅是这个问题,所有问题)。 【参考方案2】:

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

【讨论】:

这是第二个 3,我的意思是前 3 个,前 3 个是做什么的?

以上是关于“原始图像数据,作为字节字符串”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

转义字符串是啥意思?

“就地”是啥意思?

字符串文字前的符号“@”是啥意思? [复制]

!+(不是加字符串)在 JavaScript 中是啥意思? [复制]

前导单引号是啥意思?

打字稿中的剂量[索引:字符串]是啥意思[重复]