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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用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 /好的做事方式。

答案

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

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

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

以上是关于如何使用Pillow从图像创建位图而不保存图像?的主要内容,如果未能解决你的问题,请参考以下文章

从位图图像列表创建 .avi 文件

如何使用matlab将256灰度位图图像保存为24位灰度图像?

在 c# 中从图像中创建具有特定像素格式的位图而不加载图像

在 Python 中,如何轻松地从一些源数据生成图像文件?

以块的形式保存位图图像

如何从资源位图文件中加载图像数据以进行 directshow 过滤器?