簡単に貼り付けられるように、画像ファイルを取得し、それを50%スケーリングしてクリップボードに配置するスクリプトを作成したいと思います。私がこだわっているのは、クリップボードに画像を配置する方法です。
私はxclipを知っていますが、テキストのみを扱うAFAICSです。それを生成したアプリケーションが座っていない状態でクリップボードに画像を置くことは可能ですか? -申し訳ありませんが、クリップボードがどのように機能するのかはわかりません!
以下のFlorianの回答のおかげで、スクリーンショットを撮り、最大600ピクセル幅に自動的にスケーリングすること(メールへの貼り付けなど)を達成することができました。私が直面したさらなる問題は、Thunderbirdがクリップボードからimage/png
を受け入れないことでした。 data
URLを使用してtext/html
に変換することでこれを回避しました。誰かが便利だと思った場合の私のコードは次のとおりです。
#!/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"
-t
オプションを使用して、次のようにコンテンツタイプを指定します。
xclip -selection clipboard -t image/png -i example.png