1

使用 python,可以读取图像:

from PIL import Image, ImageTk
image = Image.open("test.jpg")

然后可以通过以下方式写入 klipper:

import dbus
bus = dbus.SessionBus()
proxy = bus.get_object("org.kde.klipper","/klipper")
iface = dbus.Interface(proxy,"org.kde.klipper.klipper")
iface.setClipboardContents("text")

但是当我尝试写一张我刚刚打开的图片时 - 它说它不能接受它:

iface.setClipboardContents(image)
TypeError: Expected a string or unicode object

所以我的问题是:“如何用 python 将图像放到 klipper 中?”

4

2 回答 2

0

Image 是一个原始的 Python 成像库对象。你需要了解

1)除了图像(不是文本?)之外,Klipper 的输入格式是什么?

2)如何将图像序列化为这种格式。您不传递 Python 图像对象,但可能将数据(PNG 文件数据)保存到 Klipper。

于 2011-07-11T22:16:22.470 回答
0

找到了一些解决方案 - 不是使用 python,而是使用 bash,它不适用于远程图片 - 仅适用于本地图片(因为 gwenview)。这是一个 bash 脚本:

#!/bin/bash
cd /home/boris/Downloads/
name=`ls -t1 | head -1`
gwenview $name &
sleep 3
id=`ps -e | grep gwenview | awk '{print $1}'`
qdbus org.kde.gwenview-$id /gwenview/MainWindow_1/actions/edit_copy trigger
sleep 3
kill $id

这也可以使用 python 来完成,但是由于我进行了系统调用,而不是在图片中读取 - 不需要使用 python。

解释一下 - 假设您将图像下载到 ~/Downloads。然后,如果您使用此脚本,它将在那里找到最新鲜的文件,用 gwenview 打开它,将其复制到剪贴板(!),然后关闭 gwenview。

我认为可以正常工作 - 没有其他 gwen 可以运行。如果你想使用它 - 将脚本绑定到热键是明智的。

我正在寻找这样一个脚本的原因 - 是因为我想切换到键盘驱动的网络浏览器(例如ConkerorPentadactyl) - 它允许快速保存图像 - 而我主要需要将其粘贴到一些 .odt 文件) .

这个脚本可以进一步成为一个守护进程——它将监视下载目录。但现在我要编写一个脚本,它会下载图像并自动放入剪贴板 - 请参阅我的下一个问题

找到您可能需要的 qdbus 命令的方法是打开

qdbusviewer

并找到您需要的应​​用程序,然后找到您需要的命令,然后进行类似的调用,例如锁定屏幕:

qdbus org.kde.krunner /ScreenSaver Lock
于 2011-07-12T12:51:30.727 回答