You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pillow将Windows剪贴板BMP图像转PNG且无需保存重载

无需保存再加载,直接将剪贴板获取的BMP格式图像转为PNG格式

可以通过内存字节流(io.BytesIO)完成格式转换,完全跳过磁盘读写步骤,直接将PIL.BmpImagePlugin.DibImageFile转为PIL.PngImagePlugin.PngImageFile。

修改后的代码:

from PIL import ImageGrab, Image
import io

# 获取剪贴板图像
img1 = ImageGrab.grabclipboard()
print("Image Type1:", type(img1))

# 用内存字节流完成格式转换
with io.BytesIO() as buffer:
    # 将图像以PNG格式写入内存缓冲区
    img1.save(buffer, format='PNG')
    # 将缓冲区指针移到起始位置
    buffer.seek(0)
    # 从内存中读取PNG格式图像
    img2 = Image.open(buffer)

print("Image Type2:", type(img2))

输出结果:

Image Type1: <class 'PIL.BmpImagePlugin.DibImageFile'>
Image Type2: <class 'PIL.PngImagePlugin.PngImageFile'>

原理说明:

  • io.BytesIO创建了内存中的字节缓冲区,替代磁盘文件完成数据中转
  • 调用save方法将图像以PNG格式写入缓冲区,此时缓冲区存储的是标准PNG格式数据
  • seek(0)将缓冲区的读写指针移至开头,确保Image.open能读取完整的PNG数据
  • 通过Image.open读取缓冲区内容,直接得到PNG格式的图像对象

内容的提问来源于stack exchange,提问作者ScottC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:10:28