“原始图像数据,作为字节字符串”是啥意思?
Posted
技术标签:
【中文标题】“原始图像数据,作为字节字符串”是啥意思?【英文标题】:What does "raw image data, as a byte string" mean?“原始图像数据,作为字节字符串”是什么意思? 【发布时间】:2015-06-25 09:43:23 【问题描述】:我正在做一个程序来使用 Python 编辑 mp3 上的标签,现在我正在使用 mutagen 模块,为了使用 id3v4 标准将图像作为封面嵌入到 mp3 文件中,我必须添加 APIC 框架@ 987654321@.
但我不明白我必须在参数encoding
、mime
和data
中输入什么。
我从这里查看了一个示例并想出了这个:
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 个是做什么的?以上是关于“原始图像数据,作为字节字符串”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章