Jak skopiować obraz do schowka z pliku przy użyciu wiersza polecenia?

23

Chciałbym napisać skrypt, aby pobrać plik obrazu, przeskalować go o 50% i umieścić w schowku, aby można go było łatwo wkleić. Trochę mnie tkwi w tym, jak umieścić obraz w schowku.

Znam xclip, ale AFAICS, który zajmuje się tylko tekstem. Czy możliwe jest posiadanie obrazu w schowku bez aplikacji, która go wygenerowała? - Przepraszam, nie jestem pewien wewnętrznych elementów, jak działa schowek!

EDYTOWAĆ

Dzięki poniższej odpowiedzi Floriana udało mi się osiągnąć to, co chciałem, czyli zrobić zrzut ekranu i automatycznie przeskalować go do maksymalnej szerokości 600 pikseli (np. Do wklejenia do wiadomości e-mail). Kolejnym problemem, z którym się spotkałem, było to, że Thunderbird nie zaakceptuje image/pngze schowka. Mam okrągłe to poprzez przekształcenie go text/htmlz dataURL. Oto mój kod na wypadek, gdyby ktoś uznał go za przydatny:

#!/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
źródło
Wydaje się duplikatem: unix.stackexchange.com/questions/30093/…
Champ

Odpowiedzi:

32

Użyj -topcji, aby określić typ zawartości, np

xclip -selection clipboard -t image/png -i example.png
Florian Diesch
źródło
-tnie działa na mojej wersji xclip 0.12
Irfan
@ Power-Inside: Działa dla mnie z Xclip 0.12 16.10
Florian Diesch
1
żeby to zadziałało 17.10 musiałem to zrobić:xclip -selection clipboard -t image/png -o > example.png
Anake
Działa z wersją xclip 0.12 na moim Ubuntu 16.04.5 LTS
Champ
Działa tylko w środowiskach GTK, takich jak Gnome, a nie w środowiskach Qt, takich jak KDE / plazma lub LXQT.
noraj