我正试图将imgkit图像转换为PIL图像以修改它。当我试图使用文件时,imgkit成功地将html转换为图像。当我使用BytesIO并尝试转换为PIL映像时,我得到一个错误。
下面是我的代码:img = imgkit.from_string(template.render(a=elements, r=range(len(elements))), False, config=config)
bytesImg = BytesIO(img)
bytesImg.seek(0)
image = Image.open(bytesImg) #error here
公益诉讼。UnidentifiedImageError:无法识别镜像文件<_io。
0x102082680>
我已经看过这个和这个了。我是否错误地将imgkit图像转换为字节或有其他错误?
使用Pillow 8.1 Python 3.9和imgkit 1.0.2
我是否错误地将imgkit图像转换为字节或有其他错误?
我会从检查你的字节是否代表你的枕头理解的图像开始。内置模块imghdr应该足够,如果你是例外的格式已知的一个(见表在文档)。本例中的用法:
import imghdr
…
print(imghdr.what(None, h=img))
如果它确定格式,然后检查它是否被你的枕头支持,否则你需要手动检查文件签名(几个起始字节)。
imgkit正在将HTML转换为PDF,因为配置变量混乱。
使用
which wkhtmltoimage
查找wkhtmltoimage的路径并设置
config = imgkit.config(wkhtmltoimage="path found")
对于不同版本的python/Pillow/imgkit(在我的情况下,他们是3.6.9/8.4.0/1.2.3)遇到类似的问题。
公益诉讼。UnidentifiedImageError:无法识别镜像文件<_io。BytesIO对象在0x102082680>
与
打印(imghdr。(没有,h = img))
显示None
打印第一个字节时,发现imgkit/wkhtmltoimage
有额外的输出b'libpng警告:iCCP:已知不正确的sRGB配置文件nlibpng警告:iCCP:已知不正确的sRGB概要文件 n xff xd8 xff xe0 x00 x10JFIF x00 x01 x01 x01 x00d x00d x00 x00 xff
解决方法是修剪包含警告信息的第一个字节('quiet'选项不能解决问题)。
img = imgkit.from_string(content, False, options={"xvfb";";;"})
img = img[102:]