コマンドラインを使用してファイルからクリップボードに画像をコピーする方法は?


23

簡単に貼り付けられるように、画像ファイルを取得し、50%拡大縮小してクリップボードに置くスクリプトを作成したいと思います。私がこだわっているのは、クリップボードに画像を配置する方法です。

私はxclipを知っていますが、テキストのみを扱うAFAICSです。それを生成したアプリケーションが座っていない状態でクリップボードに画像を置くことは可能ですか?-申し訳ありませんが、クリップボードがどのように機能するのかはわかりません!

編集

以下のFlorianの回答のおかげで、スクリーンショットを撮って自動的に最大600ピクセル幅に拡大すること(たとえば、電子メールに貼り付けるため)を達成できました。さらに直面した問題は、Thunderbirdがimage/pngクリップボードから受け入れないことです。私はそれを変換することによって、このラウンドだtext/htmldataURL。誰かが便利だと思った場合の私のコードは次のとおりです。

#!/bin/bash
TMP=/tmp/screenshot.png
function screenshotfail {
  notify-send -u low -i image "Screenshot failed."
  exit
}
# Take screenshot
gnome-screenshot -a -b -p -f "$TMP" || screenshotfail
# Ensure it's max 600px wide
mogrify -resize '>600x' "$TMP" || screenshotfail
# optimise the png if optipng is installed.
which optipng >/dev/null && optipng "$TMP"

# Copy to clipboard.
#
# This is what does not work for Thunderbird:
#   xclip -selection clipboard -t image/png <"$TMP" || screenshotfail
# But this does:
echo "<img src='data:image/png;base64,"$(base64 -w0 "$TMP")"' />" | \
  xclip -selection clipboard -t text/html || screenshotfail

# Remove the temp file.
rm -f "$TMP"

# Notify user.
notify-send -u low -i image "600px screenshot copied to clipboard"

回答:


32

-tオプションを使用して、次のようなコンテンツタイプを指定します。

xclip -selection clipboard -t image/png -i example.png

-t私XCLIPバージョン0.12での動作しません
イルファン

@ Power-Inside:16.10のxclip 0.12で動作します
Florian Diesch

1
これを17.10で動作させるには、これを行わなければなりませんでしたxclip -selection clipboard -t image/png -o > example.png
。– Anake

私のUbuntu 16.04.5 LTS上XCLIPバージョン0.12で動作します
チャンプ

GnomeなどのGTK環境でのみ機能し、KDE ​​/プラズマやLXQTなどのQt環境では機能しません。
ノーラジ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.