如何在不保存图像的情况下使用 Pillow 从图像创建位图?

How to create bitmap with Pillow from image without saving image?

目前我在用

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

将位图插入 excel sheet。

我尝试使用

将图像转换为位图
im = Image.tobitmap(image_name)

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

我找到了 this,但尝试并没有解决我的问题。这是一个全新的 windows 安装和一个全新的 virtualenv,其中从来没有 PIL only pillow 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)

但不是位图,有什么想法吗?

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

如果您正在使用 from PIL import Image——正如您在使用 pillow 库时应该使用的那样——然后 Image 将是模块的名称,它没有名为 [= 的属性或函数12=]。您可能感到困惑,因为该模块中还有一个 class,它也被命名为 Image,并且 class do 的实例有您可以尝试使用的 tobitmap() 方法。

底线:您需要调用 Image.open() 或以其他方式创建一个 Image.Image 实例 然后您可以调用它的 tobitmap() 方法。

也就是说,我不认为这有助于避免在调用 out_book.get_sheet(0).insert_bitmap() 之前必须将图像保存到文件中,因为根据您在评论中所说的,这听起来像是 insert_bitmap() 方法将接受一个 file/path 参数(换句话说, 文件的名称,而不是只存储在内存中的东西。