如何使用Pillow从图像创建位图而不保存图像?

时间:2017-12-20 15:22:51

标签: python image bitmap pillow

目前我使用

im.save(save_img)
out_book.get_sheet(0).insert_bitmap(save_img, 0, 0)

将位图插入Excel工作表。

我尝试使用

将我的图片转换为位图
im = Image.tobitmap(image_name)

但我得到AttributeError: module 'PIL.Image' has no attribute 'tobitmap'

我找到了this,但尝试这并没有解决我的问题。这是一个新的Windows安装和一个新鲜的virtualenv,从来没有PIL只有枕头4.3.0。另外我在枕头的源文件中找到了tobitmap,它在网上的文档中。奇怪的是我可以用

im = Image.open(image_name).convert("RGB")
im.thumbnail((533, 70))
im.save(save_img)
out_book.get_sheet(0).insert_bitmap(save_img, 0, 0)

但不是tobitmap,任何想法?

编辑:当然我可以在插入后删除临时保存的文件,但这不是一种pythonic / good方式。

1 个答案:

答案 0 :(得分:1)

如果您正在使用from PIL import Image - 就像使用枕头库时那样 - 之后Image将成为模块的名称,该模块没有名为{{1}的属性或功能}。您可能感到困惑,因为该模块中还有一个类,它也被命名为tobitmap,该类的实例执行有一个Image方法,您可以尝试使用。

自下而上:您需要致电tobitmap()或以其他方式创建Image.open() 实例,然后您可以调用其Image.Image方法。

那就是说,我不认为在调用tobitmap()之前必须将图像保存到文件中是有帮助的,因为从评论中所说的,它听起来像是out_book.get_sheet(0).insert_bitmap()方法将接受文件/路径参数(换句话说,文件的名称,而不是仅存储在内存中的东西。