Skip to main content
 首页 » 编程设计

python之有没有办法像打开文件一样处理 PIL-Image

2025年05月04日22zhoujg

我想将屏幕截图作为打开的文件处理,更具体地说,它必须具有属性 .read()。

我正在使用 PIL 的 ImageGrab.grab() 截屏,它给了我一个图像对象,它显然没有 .read() 属性.我知道我可以保存图像并使用 open("image.png", "rb") 重新打开它,但我想知道是否有一种无需保存的简单方法过程中的图像。

我想借助 smtplib 将图像添加到电子邮件中。 通常,我会这样做:

filename='filename' 
attachment  =open(filename,'rb') 
 
part = MIMEBase('application','octet-stream') 
part.set_payload((attachment).read()) 
encoders.encode_base64(part) 
part.add_header('Content-Disposition',"attachment; filename= "+filename) 
 
msg.attach(part) 

但在这种情况下,我想使用之前截取的屏幕截图。

请您参考如下方法:

您可以使用 base64 和 BytesIO 将其存储为缓冲图像。

import base64 
from io import BytesIO 
 
buffered_img = BytesIO() 
image.save(buffered_img, format="JPEG") 
img_str = base64.b64encode(buffered_img.getvalue()) 

然后使用 img_str。