我已尝试过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使用什么?
答案 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
方法,但这稍微有点工作(图像数据仅在应用程序请求它时发送,因此它需要回调函数)。当您粘贴到同一个应用程序而不是另一个应用程序时,这也有优势。