Как скопировать картинку в буфер обмена из командной строки в Linux?

5308
Vi.

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

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

14
Что означает «вставить из буфера обмена из командной строки»? Вероятно, то же самое, но только для копирования: http://unix.stackexchange.com/questions/30093/copy-image-from-command-line-to-clipboard Ciro Santilli 新疆改造中心 六四事件 法轮功 9 лет назад 0
Более общий вопрос для любого типа файла: http://superuser.com/questions/796376/is-is-possible-to-copy-binary-data-contained-a-nul-character-to-the-x-clipboard Ciro Santilli 新疆改造中心 六四事件 法轮功 9 лет назад 0

4 ответа на вопрос

7
wnm

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

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

Когда я запускаю скрипт Лео в оболочке 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", {}) 
Немного раздражает, как вручную выйти из него, но, по крайней мере, это работает :). Спасибо! crazy2be 9 лет назад 0
5
pabloab

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

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

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

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

Как отмечено в первой ссылке: ПРИМЕЧАНИЕ. Некоторые исследования показывают, что вам нужен xclip из SVN ревизии 81 (с апреля 2010 г.) или новее, чтобы иметь обязательную опцию -t. Или примените [патчи] (http://sourceforge.net/p/xclip/patches/4/) самостоятельно. i336_ 7 лет назад 0
3
Fredrik Pihl

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

xclip < image.jpg 

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

UNTESTED

-1, я не хочу, чтобы «??? ## JFIF ### ...» в моем документе. Vi. 12 лет назад 1
На самом деле я часто этим пользовался, и примерно с прошлого года он больше не работает. Все еще ищу решение. Drasill 12 лет назад 0
Здесь не работает ... xclip - это текст только на моей Ubuntu 12.04 cmc 11 лет назад 5
1
Leo Alekseyev

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

Скопировал маленькую картинку png, используя этот скрипт. Невозможно вставить его ни в OpenOffice, ни в Gimp («В буфер обмена нет данных для вставки»). Не работает После копирования реальной картинки в Gimp и использования этого скрипта буфер возвращается к тексту, который был до этого. Vi. 12 лет назад 0
Я только что попробовал: `wget http://upload.wikimedia.org/wikipedia/commons/d/d9/Test.png && ./test.py Test.png`, где test.py - именно то, что вставлено здесь. Хорошо вклеивает в Gimp. Leo Alekseyev 12 лет назад 0
Пробовал с Test.png. Msgstr "В буфере обмена нет данных для вставки". Это зависит от запуска Gnome? Как это отладить? Я могу успешно скопировать изображение в Gimp и вставить в Openoffice, так что в целом копирование работает. Vi. 12 лет назад 0
E: не удалось найти пакет pygtk qed 10 лет назад 0

Похожие вопросы