14

Я могу скопировать изображение в Gimp и вставить его в документ OpenOffice.

Как это сделать (скопировать или вставить изображение) из командной строки?

4 ответа4

7

Я считаю, что причина, по которой сценарий Льва Алексеева не работает иногда (в некоторых системах), объясняется в этом ответе на аналогичный вопрос. Важная часть цитируется здесь:

Одна странность, которая отличается от большинства других систем: если программа, владеющая выделением (буфером обмена), исчезает, то же касается и выделения.

Когда я запускаю скрипт Лео в оболочке 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", {})
5

Как показано здесь, ключ для вставки двоичных данных в файл с помощью xclip - это указать, какие типы носителей у вас есть в буфере обмена. Для PNG вы можете:

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

Или image/jpeg и .jpg для JPEG.

Так что теперь в моем ~/Dropbox/.mybashrc я добавляю псевдоним (clipboard2photo), чтобы легко вставить в файл изображения (возможно, когда-нибудь он будет у нас на Nautilus).

2

Попробуйте xclip, он читает из стандартного ввода и должен позволить вам сделать

xclip < image.jpg

скопировать изображение в буфер обмена.

UNTESTED

1

Следующий скрипт 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 чтобы сделать исполняемым, и вы должны быть готовы .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .