在Linux中用Python将图像复制到剪贴板
我试过用gtk的方法,但速度很慢,而且处理一个“比较大”的图片(120KB)时根本不行。
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 个回答
1
你可能想用set_with_data
这个方法,不过这稍微复杂一点(图像数据只有在应用程序请求时才会发送,所以需要一些回调函数)。这样做在同一个应用程序中粘贴时会有一些好处,而不是粘贴到其他应用程序中。
3
获取和发送剪贴板上的文本,有一种方法是使用 XSel。这个工具看起来不太好,而且需要和一个外部程序进行沟通。不过,它的确能工作,而且速度挺快的。
我不确定这是不是最好的解决方案,但我知道它是有效的 :)
[编辑]你说得对,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 系统是这样管理剪贴板的。