Wie kopiere ich ein Bild in die Zwischenablage von der Kommandozeile in Linux?


14

Ich kann ein Bild in Gimp kopieren und in ein OpenOffice-Dokument einfügen.

Wie geht das (Bild kopieren oder einfügen) von der Kommandozeile aus?


Was bedeutet "Einfügen aus der Zwischenablage über die Befehlszeile" in der Vergangenheit? Wahrscheinlich das gleiche, aber nur für Kopie: unix.stackexchange.com/questions/30093/…
Ciro Santilli

Antworten:


5

Wie gefunden hier , um die Schlüssel binäre Daten in eine Datei einfügen mit xclipzu sagen ist , was Medientypen Sie auf Zwischenablage haben. Für PNG können Sie:

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

Oder image/jpegund .jpgfür JPEG.

Also ~/Dropbox/.mybashrcfüge ich jetzt auf meinem einen Alias ​​(clipboard2photo) hinzu, um ihn einfach in eine Bilddatei einzufügen (vielleicht haben wir ihn eines Tages auf Nautilus ).


Wie im ersten Link vermerkt: HINWEIS: Einige Untersuchungen haben ergeben, dass Sie xclip aus SVN-Revision 81 (ab April 2010) oder höher benötigen, um die erforderliche Option -t zu haben. Oder wenden Sie die Patches selbst an.
i336_

7

Ich glaube, der Grund, warum Leo Alekseyev-Skript manchmal (auf einigen Systemen) nicht funktioniert, wird in dieser Antwort auf eine ähnliche Frage erläutert . Wichtiger Teil hier zitiert:

Eine Kuriosität, die sich von den meisten anderen Systemen unterscheidet: Wenn das Programm, das die Auswahl besitzt (Zwischenablage), verschwindet, verschwindet auch die Auswahl.

Wenn ich Leos Skript in der Python-Shell starte, funktioniert es, solange die Shell läuft. Ich denke also, die Daten in der Zwischenablage gehen verloren, wenn das Skript beendet wird. Die in der Antwort gepostete Lösung funktioniert bei mir:

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

Update von _Vi: Der Vollständigkeit halber das Clipboard-> File Script hinzufügen:

#!/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", {})

Es ist ein bisschen nervig, wie man es manuell beenden muss, aber zumindest funktioniert es :). Vielen Dank!
crazy2be

1

Das folgende Python / Pygtk-Skript erledigt die Aufgabe:

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

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

Um dies zu nutzen, sudo apt-get install python pygtkfügen Sie den obigen Code in ein Skript, chmod +xum ausführbar zu machen, und Sie sollten gut zu gehen.


Kopierte kleine PNG-Bild mit diesem Skript. Es kann weder in OpenOffice noch in Gimp eingefügt werden ("Es sind keine Bilddaten in der Zwischenablage zum Einfügen vorhanden"). Arbeite nicht Nach dem Kopieren des aktuellen Bildes in Gimp und der Verwendung dieses Skripts wird der Puffer auf den vorherigen Text zurückgesetzt.
Vi.

Ich habe gerade versucht: wget http://upload.wikimedia.org/wikipedia/commons/d/d9/Test.png && ./test.py Test.png, wo test.py ist genau das, was hier eingefügt ist. Passt gut in Gimp.
Leo Alekseyev

Versucht mit Test.png. Msgstr "Es gibt keine Bilddaten in der Zwischenablage zum Einfügen". Kommt es darauf an, Gnome auszuführen? Wie kann ich das debuggen? Ich kann das Bild erfolgreich in Gimp kopieren und in Openoffice einfügen, daher funktioniert das Kopieren im Allgemeinen.
Vi.

E: Das Paket pygtk
qed konnte am
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.