如何使用Python在操作系统剪贴板中添加/获取图像数据?

Edw*_*ard 6 python clipboard python-3.x clipboarddata

我有一些编辑图像文件的 Python 代码,并且想知道如何将
图像数据添加到操作系统剪贴板并从那里获取它。

当在 Python 中搜索跨平台解决方案来替换或获取剪贴板文本
时, 有许多简单的答案可以实现(例如,使用内置的 Tkinter 模块和一些代码)。
然而,这些方法只能使用纯文本,而不能使用图像等其他剪贴板数据。

我的 Python 版本在 Windows 上是 3.x,但答案需要是跨平台的
(在不同操作系统上工作),并且还应该支持其他 Python 版本,如 2.x。
我认为它应该只使用内置的Python模块,并且代码不应该太复杂(或者对其作用进行解释)。它可以是 Python 模块,因为这些文件可以包含在与可移植程序代码相同的文件夹中以避免安装。

还有一些其他相关问题可能适用于图像,但它们仅支持单个操作系统。最好的是在Python3中将图像复制到剪贴板使用PIL和win32clipboard在python中将图像写入Windows剪贴板?
那里描述的方法(仅适用于 Windows)似乎使用以下步骤:

  • 获取图像的原始二进制数据 - 该方法使用 Python 图像
    库 ( PIL/Pillow ) 模块加载图像文件,因为它具有稍后在简单
    且流行的标准 API 中使用的其他处理功能。这可以使用不同的模块来完成(例如Pygame)。
  • 使用内置io
    模块创建一个文件对象变量(用于内存中输入/输出流)。对于 Python 2.x,from cStringIO import StringIO使用,但对于 Python 3,使用
    更好的二进制流对象类型 - 旧的现在仅允许文本。io.BytesIO
  • 将图像数据以 BMP(Windows 位图/设备独立位图)文件格式保存
    到上一步中的文件对象变量中。使用 PIL/Pillow 的方法首先将此
    数据转换为.convert("RGB")包含它的变量。
  • 获取文件对象变量内存缓冲区的全部内容作为二进制数据(bytes对象),
    从位置 14 对其进行切片,以删除 BMP/DIB 文件格式的 14 字节标头,然后将其保存
    为变量。该方法表示,该数据的切片适用于 32 或 64 位系统,但
    需要 Windows 剪贴板 API,因此不适用于其他文件格式。
  • 关闭内存缓冲区并将上一步中的图像数据复制到剪贴板。
    该方法在 Windows 上使用win32clipboard扩展模块的一部分来执行此操作 -
    打开剪贴板以供使用,清除它,将其值设置为
    上一步中的图像数据变量(使用 BMP/DIB 类型),然后关闭打开的剪贴板。

此外,还有一个简单的跨平台剪贴板文本模块,称为Pyperclip,它
只是 1.5.6 版本的单个文件,并且可能包含可以处理图像数据的代码。

flu*_*uke 0

我认为如果没有外部模块,您就无法与剪贴板交互。

不同操作系统的剪贴板 API 有所不同。

我建议您使用剪贴板模块。

https://pypi.python.org/pypi/clipboard/0.0.4