Jak skopiować zdjęcie do schowka z linii poleceń w systemie Linux?

14

Mogę skopiować obraz w Gimp i wkleić go do dokumentu OpenOffice.

Jak to zrobić (skopiować lub wkleić obraz) z wiersza poleceń?

Vi.
źródło
Co oznacza przeszłe „wklej ze schowka z wiersza poleceń”? Prawdopodobnie to samo, ale tylko dla kopii: unix.stackexchange.com/questions/30093/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Bardziej ogólne pytanie dla dowolnego typu pliku: superuser.com/questions/796376/...
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

5

Jak stwierdzono tutaj , kluczem do wklejenia danych binarnych do pliku xclipjest określenie, jakie typy multimediów masz w schowku. W przypadku PNG możesz:

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

Lub image/jpegi .jpgdla JPEG.

Więc teraz ~/Dropbox/.mybashrcdodaję alias (clipboard2photo), aby łatwo wkleić do pliku obrazu (może kiedyś będziemy go mieć na Nautilusie ).

pabloab
źródło
Jak zauważono w pierwszym linku: UWAGA: Niektóre badania pokazują, że potrzebujesz xclip z wersji SVN 81 (od kwietnia 2010 r.) Lub nowszej, aby mieć wymaganą opcję -t. Lub zastosuj łaty samodzielnie.
i336_
7

Uważam, że powód, dla którego skrypt Lwa Aleksiejewa czasami nie działa (w niektórych systemach) został wyjaśniony w tej odpowiedzi na podobne pytanie. Ważna część cytowana tutaj:

Jedna osobliwość różniąca się od większości innych systemów: jeśli program będący właścicielem zaznaczenia (schowek) zniknie, to samo spowoduje zaznaczenie.

Kiedy uruchamiam skrypt Leo w powłoce Pythona, działa on tak długo, jak działa powłoka. Myślę więc, że dane schowka zostaną utracone, kiedy skrypt zostanie zakończony. Rozwiązanie opublikowane w odpowiedzi działa dla mnie:

#!/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()

Aktualizacja od _Vi: Dla kompletności, dodaj schowek-> skrypt pliku:

#!/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", {})
wnm
źródło
To trochę denerwujące, jak trzeba ręcznie go zamknąć, ale przynajmniej działa :). Dzięki!
crazy2be
1

Następujący skrypt python / pygtk wykonuje to zadanie:

#!/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]);

(Źródło: http://ubuntuforums.org/showthread.php?t=1689889 )

Aby tego użyć sudo apt-get install python pygtk, wklej powyższy kod do skryptu, chmod +xaby był wykonywalny, i powinieneś być gotowy.

Lew Aleksiejjew
źródło
Skopiowałem małe zdjęcie png za pomocą tego skryptu. Nie można go wkleić ani do OpenOffice, ani do Gimp („W schowku nie ma danych obrazu do wklejenia”). Nie pracuj Po skopiowaniu rzeczywistego obrazu w Gimp i użyciu tego skryptu bufor powraca do tekstu, który był wcześniej.
Vi.
Właśnie próbowałem: wget http://upload.wikimedia.org/wikipedia/commons/d/d9/Test.png && ./test.py Test.pnggdzie test.py jest dokładnie tym, co tu wkleiłem. Wkleja się dobrze w Gimpa.
Lew Aleksiejew
Próbowałem z Test.png. „W schowku nie ma danych obrazu do wklejenia”. Czy to zależy od uruchomienia Gnome? Jak to debugować? Mogę z powodzeniem skopiować obraz w Gimp i wkleić w Openoffice, więc ogólnie kopiowanie działa.
Vi.
E: Nie udało się odnaleźć pakietu pygtk
okazania