Como copiar uma imagem para a área de transferência da linha de comando no linux?


14

Posso copiar a imagem no Gimp e colá-la no documento do OpenOffice.

Como fazer isso (copiar ou colar imagem) na linha de comando?


O que significa "colar da área de transferência a partir da linha de comando" passado? Provavelmente o mesmo, mas apenas para cópia: unix.stackexchange.com/questions/30093/…
Ciro Santilli #

Pergunta mais geral para qualquer tipo de arquivo: superuser.com/questions/796376/…
Ciro Santilli #

Respostas:


5

Como encontrado aqui , a chave para colar dados binários em um arquivo xclipé informar quais tipos de mídia você possui na área de transferência. Para PNG, você pode:

xclip -selection clipboard -t image/png -o > "`date '+%Y-%m-%d_%T'`.png"

Ou image/jpege .jpgpara JPEG.

Então agora no meu ~/Dropbox/.mybashrceu adiciono um alias (clipboard2photo) para colar facilmente no arquivo de imagem (talvez um dia o tenhamos no Nautilus ).


Conforme observado no primeiro link: NOTA: Algumas pesquisas mostram que você precisa do xclip da revisão 81 do SVN (a partir de abril de 2010) ou posterior para ter a opção -t necessária. Ou aplique os patches você mesmo.
i336_ 03/03

7

Eu acredito que a razão pela qual o script Leo Alekseyev às vezes não funciona (em alguns sistemas) é explicada nesta resposta a uma pergunta semelhante. Parte importante citada aqui:

Uma singularidade diferente da maioria dos outros sistemas: se o programa que possui a seleção (área de transferência) desaparecer, o mesmo ocorre com a seleção.

Quando executo o script de Leo no shell python, ele está funcionando, desde que o shell esteja em execução. Então, acho que os dados da área de transferência são perdidos quando o script é finalizado. A solução postada na resposta está funcionando para mim:

#!/usr/bin/env python
import gtk 
import sys

count = 0
def handle_owner_change(clipboard, event):
    global count
    print 'clipboard.owner-change(%r, %r)' % (clipboard, event)
    count += 1
    if count > 1:
       sys.exit(0)

image = gtk.gdk.pixbuf_new_from_file(sys.argv[1])
clipboard = gtk.clipboard_get()
clipboard.connect('owner-change', handle_owner_change)
clipboard.set_image(image)
clipboard.store()
gtk.main()

Atualização de _Vi: Para completar, adicione o script clipboard-> file:

#!/usr/bin/python
import gtk, pygtk
pygtk.require('2.0')
import sys, os

clipboard = gtk.clipboard_get()
img = clipboard.wait_for_image()
img.save(sys.argv[1], "png", {})

É um pouco chato como ter que sair manualmente, mas pelo menos funciona :). Obrigado!
crazy2be

1

O seguinte script python / pygtk faz o trabalho:

#!/usr/bin/python
import gtk, pygtk
pygtk.require('2.0')
import sys, os

def copy_image(f):
    assert os.path.exists(f), "file does not exist"
    image = gtk.gdk.pixbuf_new_from_file(f)
    clipboard = gtk.clipboard_get()
    clipboard.set_image(image)
    clipboard.store()

copy_image(sys.argv[1]);

(Fonte: http://ubuntuforums.org/showthread.php?t=1689889 )

Para usar isso, sudo apt-get install python pygtkcole o código acima em um script, chmod +xpara torná-lo executável, e você deve estar pronto.


Copiada pequena imagem png usando este script. Não é possível colá-lo no OpenOffice nem no Gimp ("Não há dados de imagem na área de transferência para colar"). Não trabalhe. Após copiar a imagem real no Gimp e usar esse script, o buffer reverte para o texto anterior.
Vi.

Eu apenas tentei wget http://upload.wikimedia.org/wikipedia/commons/d/d9/Test.png && ./test.py Test.png:, onde test.py é exatamente o que é colado aqui. Cola bem no Gimp.
Leo Alekseyev

Tentei com o Test.png. "Não há dados de imagem na área de transferência para colar". Depende da execução do Gnome? Como depurar isso? Posso copiar com êxito a imagem no Gimp e colar no Openoffice, portanto, em geral, copiar funciona.
Vi.

E: Não foi possível localizar o pacote pygtk
qed
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.