在linux中将图像粘贴到python中的剪贴板

时间:2010-08-26 03:32:53

标签: python image copy

我已尝试过gtk方法,但速度非常慢,无法用于“大型”图像(120 kb)

import pygtk
pygtk.require('2.0')
import gtk
import os
def copy_image(f):
    assert os.path.exists(f), "file does not exist"
    clipboard = gtk.clipboard_get()
    img = gtk.Image()
    img.set_from_file(f)
    clipboard.set_image(img.get_pixbuf())
    clipboard.store()

我曾尝试使用xclip并且只执行文本,那么还有其他选项吗? ubuntu使用什么?

2 个答案:

答案 0 :(得分:3)

从/向剪贴板获取文本的一种方法是使用XSel。它不漂亮,需要您与外部程序进行通信。但它的工作原理非常快。

不确定这是否是最佳解决方案,但我知道它有效:)

[edit]你是对的,似乎xsel不支持图片。

在这种情况下,如何略微修改GTK版本。

def copy_image(f):
    assert os.path.exists(f), "file does not exist"
    image = gtk.gdk.pixbuf_new_from_file(f)

    clipboard = gtk.clipboard_get()
    clipboard.set_image(image)
    clipboard.store()

请注意,如果您的程序因X跟踪剪贴板的方式而立即退出,则可能需要更改所有者。

答案 1 :(得分:1)

您可能希望使用set_with_data方法,但这稍微有点工作(图像数据仅在应用程序请求它时发送,因此它需要回调函数)。当您粘贴到同一个应用程序而不是另一个应用程序时,这也有优势。