2011-07-11 43 views
1

使用Python,可以在圖像中讀出:如何把圖像從Python到klipper?

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

然後一個可以寫在下面的方式來克利佩爾:

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 

所以我的問題是:「如何把圖像與蟒蛇克利佩爾」

回答

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。

解釋它 - 假設您下載圖像〜/下載。然後如果你使用這個腳本,它會在那裏找到最新鮮的文件,用gwenview打開它,將它複製到剪貼板(!),然後關閉gwenview。

我認爲工作正常 - 沒有其他gwen可以運行。如果你想使用它 - 將腳本綁定到熱鍵是明智的。

我一直在尋找這樣一個劇本的原因 - 是因爲我想要切換到鍵盤驅動的網頁瀏覽器(如ConkerorPentadactyl) - 它允許快速保存圖像 - 而我主要是需要將其粘貼到一些.odt文件)。

這個腳本可以進一步做一個守護進程 - 它將觀看下載目錄。但現在我寫一個腳本,它將下載圖像,並自動放到剪貼板 - 請參閱my next question

找到qdbus命令你可能需要的方式 - 是打開

qdbusviewer 

,並找到你需要你需要的應用程序,那麼該命令,然後撥打電話同樣它做了,例如鎖屏:

qdbus org.kde.krunner /ScreenSaver Lock 
0

圖像是一個原始的Python圖像庫對象。你需要找出

1)圖像輸入什麼格式克利佩爾節選(不是文本?)

2)如何序列圖像以這種格式。您不會傳遞Python圖像對象,但可能將保存的數據(PNG文件數據)保存到Klipper。