Como copiar uma imagem para a área de transferência de um arquivo usando a linha de comando?


23

Gostaria de escrever um script para obter um arquivo de imagem, escalá-lo em 50% e colocá-lo na área de transferência para que possa ser colado facilmente. A parte em que estou preso é como colocar uma imagem na área de transferência.

Eu conheço o xclip, mas o AFAICS que lida apenas com texto. É possível ter uma imagem na área de transferência sem o aplicativo que a gerou parado? - Desculpe, não tenho certeza dos detalhes internos de como a área de transferência funciona!

EDITAR

Graças à resposta de Florian abaixo, consegui o que queria: tirar uma captura de tela e escalá-la automaticamente para um máximo de 600px de largura (por exemplo, para colar em um email). O outro problema que enfrentei foi que o Thunderbird não aceitará image/pngda área de transferência. Eu contornei isso convertendo-o para text/htmlcom um dataURL. Aqui está o meu código, caso alguém considere ú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"

Respostas:


32

Use a -topção para especificar o tipo de conteúdo, como

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

-tnão funciona no meu xclip versão 0.12
Irfan

@ Power-Inside: Funciona para mim com o xclip 0.12 em 16.10
Florian Diesch 7/16/16

1
para que isso funcionasse em 17.10, eu tinha que fazer o seguinte:xclip -selection clipboard -t image/png -o > example.png
Anake

Funciona com o xclip versão 0.12 no meu Ubuntu 16.04.5 LTS
Champ

Funciona apenas para ambientes GTK como Gnome, não para ambientes Qt como KDE / plasma ou LXQT.
noraj 7/01
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.