Wie kopiere ich ein Bild aus einer Datei in die Zwischenablage?

23

Ich möchte ein Skript schreiben, um eine Bilddatei aufzunehmen, sie zu 50% zu skalieren und in die Zwischenablage zu kopieren, damit sie einfach eingefügt werden kann. Das, woran ich festhalte, ist, wie man ein Bild in die Zwischenablage legt.

Ich kenne xclip, aber AFAICS, das sich nur mit Text befasst. Ist es möglich, ein Bild in der Zwischenablage zu haben, ohne dass die Anwendung, die es erzeugt hat, herumsteht? - Tut mir leid, ich bin mir nicht sicher, wie die Zwischenablage funktioniert!

BEARBEITEN

Dank der Antwort von Florian unten konnte ich das erreichen, was ich wollte, nämlich einen Screenshot aufzunehmen und ihn automatisch auf eine maximale Breite von 600px zu skalieren (z. B. zum Einfügen in eine E-Mail). Das weitere Problem, mit dem ich konfrontiert war, war, dass Thunderbird nicht image/pngaus der Zwischenablage akzeptiert . Ich habe das umgangen, indem ich es text/htmlmit einer dataURL konvertiert habe . Hier ist mein Code für den Fall, dass jemand ihn nützlich findet:

#!/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"
Kunstvollroboter
quelle
Scheint ein Duplikat von: unix.stackexchange.com/questions/30093/…
Champ

Antworten:

32

Verwenden Sie die -tOption, um den Inhaltstyp anzugeben, z

xclip -selection clipboard -t image/png -i example.png
Florian Diesch
quelle
-tfunktioniert nicht auf meinem Xclip Version 0.12
Irfan
@ Power-Inside: Funktioniert bei mir mit xclip 0.12 am 16.10
Florian Diesch
1
Damit dies am 17.10 funktioniert, musste ich xclip -selection clipboard -t image/png -o > example.png
Folgendes
Funktioniert mit xclip Version 0.12 auf meinem Ubuntu 16.04.5 LTS
Champ
Funktioniert nur für GTK-Umgebungen wie Gnome, nicht für Qt-Umgebungen wie KDE / Plasma oder LXQT.
Noraj