使用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上?”
答案 0 :(得分:0)
Image是一个原始的Python映像库对象。你需要找出
1)Klipper对图像的输入格式是什么(不是文本?)
2)如何将图像序列化为此格式。您不传递Python图像对象,但可能将数据(PNG文件数据)保存到Klipper。
答案 1 :(得分: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
这也可以用cource的python来完成,但是因为我进行系统调用,而不是在图片中读取 - 所以不需要使用python。
解释一下 - 假设您已将图像下载到〜/ Downloads。然后,如果您使用此脚本,它将在那里找到最新鲜的文件,用gwenview打开它,将其复制到剪贴板(!),然后关闭gwenview。
我认为要正常工作 - 没有其他gwen可以运行。如果你想使用它 - 将脚本绑定到热键是明智的。
我之所以寻找这样一个脚本,是因为我想切换到键盘驱动的web浏览器(例如Conkeror或Pentadactyl) - 它可以快速保存图像 - 而我主要需要将其粘贴到某个.odt文件中。)
这个脚本可以进一步成为一个守护进程 - 它将观看下载目录。但是现在我要编写一个脚本来下载图像,然后自动放到剪贴板中 - 请参阅my next question。
找到你可能需要的qdbus命令的方法是打开
qdbusviewer
找到您需要的应用程序,然后找到您需要的命令,然后按照类似的方式拨打电话,例如锁定屏幕:
qdbus org.kde.krunner /ScreenSaver Lock