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"

Odpowiedzi:


32

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

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

-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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.