6

Я хочу установить буфер обмена в файл abc.jpg в формате изображения, чтобы я мог вставить его в gpaint и т.д. Приложения X11, можно?

Я включил функцию снимка экрана в диспетчере окон Compiz , и мне нужно указать командную строку для копирования файла снимка в буфер обмена.

5 ответов5

9

Сначала установите python и pygtk

sudo apt-get install python pygtk

Теперь сохраните следующий скрипт как imgclip.py (см. Https://stackoverflow.com/questions/3571855/pasting-image-to-clipboard-in-python-in-linux)

#! /usr/bin/python

import pygtk
pygtk.require('2.0')
import gtk
import os
import sys

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]);

Чтобы использовать это:

python /path/to/imgclip.py filename.png

Примечание: проверено склеивание в gimp и xournal. Примечание: это для рабочего стола gnome (отсюда и gtk). Бьюсь об заклад, есть что-то подобное для KDE

5

Установите xclip (убедитесь, что версия 0.12+svn84, потому что 0.12 недостаточно); затем добавьте эту строку в поле в менеджере настроек compiz:

xclip -selection clipboard -target image/png -i

Пример в компизе

После этого вы сможете вставить его в любое другое приложение x

3

Проверьте xclip . Позволяет перемещать текст или файлы в буфер обмена из командной строки.

РЕДАКТИРОВАТЬ:

В этом посте обсуждаются приложения для создания скриншотов из командной строки: http://www.linux.com/archive/feed/57772, включая scrot . Это из справочной страницы scrot :

scrot  is  a  screen capture utility using the imlib2 library to aquire
       and save images.  scrot has a  few  options,  detailed  below.  Specify
       [file]  as  the  filename  to save the screenshot to.

Последний вариант - найти приложение X, которое просто делает снимок экрана при нажатии (без подсказок, диалоговых окон и т.д.), Назначить его комбинации горячих клавиш и использовать xdotool для имитации нажатия клавиш из командной строки.

2

Я бы отключил функцию скриншота Compiz, просто зайдите в System -> Preferences -> Keyboard Shortcuts (в категории « Desktop ») и привязайте Экран печати, чтобы Take a Screenshot


Теперь, когда вы нажимаете PrintScreen, снимок экрана будет сделан с возможностью скопировать в буфер обмена или просто сохранить файл.

1

scrot + xclip

Вы можете использовать scrot с xclip чтобы сделать скриншот и скопировать его в буфер обмена.

scrot '/tmp/%F_%T_$wx$h.png' -e 'xclip -selection clipboard -target image/png -i $f'

Он захватит весь ваш экран и скопирует изображение в буфер обмена. Если вы хотите захватить текущее окно, используйте флаг -u . Для выбора конкретной области вы можете добавить флаг -s . Смотрите $ man scrot для большего количества вариантов.

Он сохранит ваш скриншот в каталоге /tmp . Вы можете изменить этот каталог там, где вы хотите, чтобы он хранился. Файлы из каталога /tmp обычно удаляются после каждой перезагрузки. Если вы хотите немедленно удалить сохраненный файл, сделайте что-то вроде:

scrot -w '/tmp/%F_%T_$wx$h.png' -e 'xclip -selection clipboard -target image/png -i $f && rm $f'

Как я читал в других комментариях, это нужно для копирования скриншота в буфер обмена. Надеюсь, это ответит на ваш вопрос.

Если вам просто нужно скопировать уже существующий файл изображения в буфер обмена:

cat 2018-06-16-224938_670x730_scrot.png | xclip -selection clipboard -target image/png -i

Вы можете установить сочетания клавиш / сочетания клавиш в соответствии с текущей рабочей средой / оконным менеджером.


бонус

Объяснение /tmp/%F_%T_$wx$h.png:

Он используется в качестве имени файла. Они называются format specifiers . Они бывают двух типов: начиная с % или $ .

%F     Equivalent to %Y-%m-%d (the ISO 8601 date format).

%T     The time in 24-hour notation (%H:%M:%S).

%F_%T_ напечатает что-то вроде: 2018-06-17_02:52:19_ т.е. ваша текущая метка времени. Вы можете настроить формат в соответствии с вашими требованиями. Смотрите $ man strftime для получения дополнительной помощи.

$wx$h являются частью внутренних спецификаторов scrot.

$w   image width
$h   image height

Таким образом, окончательное имя файла будет выглядеть примерно так 2018-06-17_02:52:19_1365x384.png .

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