【问题标题】:Pasting image to clipboard in python in linux在linux中的python中将图像粘贴到剪贴板
【发布时间】:2010-08-26 03:32:52
【问题描述】:

我尝试了 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 用什么?

【问题讨论】:

  • "Ubuntu" 不使用任何东西,Ubuntu 中的应用程序可能使用各种编程语言和图形工具包。

标签: python image copy


【解决方案1】:

从/到剪贴板获取文本的一种方法是使用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 跟踪剪贴板的方式而立即退出,您可能需要更改所有者。

【讨论】:

  • 似乎没有粘贴图片...只有文字
  • @josh:看来你是对的,我添加了一种更快的替代方法。
  • 谢谢!工作得更快,但这很奇怪,它似乎很适合粘贴到 gimp 中,但是当粘贴到 gnumeric 或 openoffice 电子表格时,它不会粘贴!嗯……有什么想法吗?
  • @Josh:这里只是猜测,但也许 OpenOffice 和 Gnumeric 无法确定图像类型?您是否也尝试过其他图像类型(png/bmp)?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2012-05-02
    相关资源
    最近更新 更多