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/png
del portapapeles. Obtuve esto convirtiéndolo text/html
con una data
url. 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"
fuente
Respuestas:
Use la
-t
opción para especificar el tipo de contenido, comofuente
-t
no funciona en mi xclip versión 0.12xclip -selection clipboard -t image/png -o > example.png