¿Cómo copiar una imagen al portapapeles desde un archivo usando la línea de comandos?

23

Me gustaría escribir un script para tomar un archivo de imagen, escalarlo al 50% y ponerlo en el portapapeles para que se pueda pegar fácilmente. La parte en la que estoy atascado es cómo colocar una imagen en el portapapeles.

Sé de xclip, pero AFAICS que solo trata con texto. ¿Es posible tener una imagen en el portapapeles sin la aplicación que la generó? - Lo siento, no estoy seguro de lo interno de cómo funciona el portapapeles.

EDITAR

Gracias a la respuesta de Florian a continuación, pude lograr lo que quería, que era tomar una captura de pantalla y escalarla automáticamente a un máximo de 600 px de ancho (por ejemplo, para pegar en un correo electrónico). El problema adicional que enfrenté fue que Thunderbird no aceptará image/pngdel portapapeles. Obtuve esto convirtiéndolo text/htmlcon una dataurl. Aquí está mi código en caso de que alguien lo encuentre útil:

#!/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
fuente
Parece un duplicado de: unix.stackexchange.com/questions/30093/…
Champ

Respuestas:

32

Use la -topción para especificar el tipo de contenido, como

xclip -selection clipboard -t image/png -i example.png
Florian Diesch
fuente
-tno funciona en mi xclip versión 0.12
Irfan
@ Power-Inside: funciona para mí con xclip 0.12 en 16.10
Florian Diesch el
1
para que esto funcione el 17.10 Tuve que hacer esto:xclip -selection clipboard -t image/png -o > example.png
Anake
Funciona con xclip versión 0.12 en mi Ubuntu 16.04.5 LTS
Champ
Funciona solo para entornos GTK como Gnome, no para entornos Qt como KDE / plasma o LXQT.
noraj