无法将imgkit图像转换为PIL图像



我正试图将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:]

最新更新