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

画像は生の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は実行できませんでした。使用したい場合は、スクリプトをホットキーにバインドすることをお勧めします。

私がそのようなスクリプトを探していた理由は、キーボード駆動の Web ブラウザー ( ConkerorPentadactylなど) に切り替えたいためです。これにより、画像をすばやく保存できますが、ほとんどの場合、.odt ファイルに貼り付ける必要があります)。 .

このスクリプトはさらにデーモンにすることができます - ダウンロード ディレクトリを監視します。しかし今、私は画像をダウンロードして自動的にクリップボードに入れるスクリプトを書きます -私の次の質問を見てください。

必要な qdbus コマンドを見つける方法は、開くことです

qdbusviewer

必要なアプリを見つけてから、必要なコマンドを見つけて、同様に電話をかけます。たとえば、画面をロックします。

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