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

如何在Python 3中实现带透明通道的PIL.Image.Image内存复制至剪贴板

内存中复制带Alpha通道的PIL图像到剪贴板(无临时文件)

原方法使用CF_DIB格式导致透明像素变黑,原因是该格式对应的BITMAPINFOHEADER不支持Alpha通道。改用Windows剪贴板的CF_DIBV5格式(对应支持Alpha的BITMAPV5HEADER),即可实现纯内存操作,完整保留图像透明度。

实现代码

from PIL import Image
import io
import win32clipboard

def copy_image_to_clipboard(image):
    # 确保图像转为RGBA模式,保留透明度
    img_rgba = image.convert("RGBA")
    
    # 在内存中生成带Alpha的BMP数据
    output = io.BytesIO()
    img_rgba.save(output, format="BMP")
    
    # 跳过BMP文件头(前14字节),提取BITMAPV5HEADER+像素数据
    bmp_data = output.getvalue()[14:]
    
    try:
        win32clipboard.OpenClipboard()
        win32clipboard.EmptyClipboard()
        # 用CF_DIBV5格式写入剪贴板,支持透明度
        win32clipboard.SetClipboardData(win32clipboard.CF_DIBV5, bmp_data)
    finally:
        win32clipboard.CloseClipboard()
        output.close()

# 使用示例
# target_img = Image.open("your_image.png")
# copy_image_to_clipboard(target_img)

说明

  • 全程通过BytesIO在内存中处理图像数据,无任何磁盘IO操作,不会损耗存储设备寿命。
  • 依赖库:需提前安装pillow和pywin32,执行pip install pillow pywin32即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:34:58