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"

Jawaban:


32

Gunakan -topsi untuk menentukan jenis konten, seperti

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

-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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.