我收到此错误消息:
/Chris
通过此代码:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
不知道为什么,因为昨天它起作用了...
答案 0 :(得分:2)
正如其他人所说,这是因为open
试图以文本形式读取文件。但是,您可以通过直接使用Image.open()
img = Image.open('pictures/' + filename)
为方便起见,它将直接接受文件路径并为您进行相关处理;在这里查看其文档以了解更多!
https://pillow.readthedocs.io/en/latest/reference/Image.html#PIL.Image.open
此外,使用Image.open
作为上下文管理器来处理完成后打开和关闭图像(there's a good explanation here)
with Image.open('pictures/' + filename) as img:
# process img
# closed when leaves scope
答案 1 :(得分:0)
我认为您需要以二进制模式打开文件:
image_file = open('pictures/' +filename, 'rb')
答案 2 :(得分:0)
在不使用任何其他参数的情况下使用open(filename)
函数时,将以“文本”模式打开文件。
Python将在读取文件时假定该文件包含文本。当它找到一个值为255
(0xFF)的字节时,就会感到困惑,因为没有文本字符与该字节匹配。
要解决此问题,请以字节模式打开文件:
open(filename, "b")
这告诉python不要假定它包含文本,而文件句柄只会给出原始字节。
因为这是一个常见用例,所以PIL已经按内置的文件名打开了图像:
Image.open(filename)