Bagaimana cara menyalin gambar ke clipboard dari file menggunakan baris perintah?

23

Saya ingin menulis skrip untuk mengambil file gambar, skala 50% dan letakkan di clipboard sehingga dapat disisipkan dengan mudah. Bit yang saya terjebak adalah bagaimana menempatkan gambar di clipboard.

Saya tahu tentang xclip, tetapi AFAICS hanya berurusan dengan teks. Apakah mungkin untuk memiliki gambar di clipboard tanpa aplikasi yang membuatnya duduk? - Maaf saya tidak yakin dengan internal tentang cara kerja clipboard!

EDIT

Berkat jawaban Florian di bawah ini, saya dapat mencapai apa yang saya inginkan, yaitu mengambil tangkapan layar dan secara otomatis menskalakannya hingga maksimum 600px lebar (misalnya untuk menempelkan ke email). Masalah selanjutnya yang saya hadapi adalah bahwa Thunderbird tidak akan menerima image/pngdari clipboard. Saya menyelesaikan ini dengan mengonversinya menjadi text/htmldengan dataurl. Ini kode saya kalau-kalau ada yang merasa berguna:

#!/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"
artfulrobot
sumber
Tampaknya duplikat: unix.stackexchange.com/questions/30093/...
Champ

Jawaban:

32

Gunakan -topsi untuk menentukan jenis konten, seperti

xclip -selection clipboard -t image/png -i example.png
Florian Diesch
sumber
-ttidak berfungsi pada versi xclip saya 0.12
Irfan
@ Power-Inside: Bekerja untuk saya dengan xclip 0.12 pada 16.10
Florian Diesch
1
untuk membuat ini bekerja pada 17.10 saya harus melakukan ini:xclip -selection clipboard -t image/png -o > example.png
Anake
Bekerja dengan xclip versi 0.12 di Ubuntu 16.04.5 LTS saya
Champ
Hanya berfungsi untuk lingkungan GTK seperti Gnome, bukan untuk lingkungan Qt seperti KDE / plasma atau LXQT.
noraj