Я могу скопировать изображение в Gimp и вставить его в документ OpenOffice.
Как это сделать (скопировать или вставить изображение) из командной строки?
Я считаю, что причина, по которой сценарий Льва Алексеева не работает иногда (в некоторых системах), объясняется в этом ответе на аналогичный вопрос. Важная часть цитируется здесь:
Одна странность, которая отличается от большинства других систем: если программа, владеющая выделением (буфером обмена), исчезает, то же касается и выделения.
Когда я запускаю скрипт Лео в оболочке python, он работает, пока работает оболочка. Поэтому я думаю, что данные буфера обмена теряются, когда скрипт завершается. Решение, опубликованное в ответе, работает на меня:
#!/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()
Обновление от _Vi: для полноты добавьте скрипт 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", {})
Как показано здесь, ключ для вставки двоичных данных в файл с помощью xclip
- это указать, какие типы носителей у вас есть в буфере обмена. Для PNG вы можете:
xclip -selection clipboard -t image/png -o > "`date '+%Y-%m-%d_%T'`.png"
Или image/jpeg
и .jpg
для JPEG.
Так что теперь в моем ~/Dropbox/.mybashrc
я добавляю псевдоним (clipboard2photo), чтобы легко вставить в файл изображения (возможно, когда-нибудь он будет у нас на Nautilus).
Попробуйте xclip, он читает из стандартного ввода и должен позволить вам сделать
xclip < image.jpg
скопировать изображение в буфер обмена.
UNTESTED
Следующий скрипт python/pygtk выполняет свою работу:
#!/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]);
(Источник: http://ubuntuforums.org/showthread.php?t=1689889)
Чтобы использовать это, sudo apt-get install python pygtk
, вставьте приведенный выше код в скрипт, chmod +x
чтобы сделать исполняемым, и вы должны быть готовы .