Як скопіювати зображення в буфер обміну, вставити в іншу програму?


6

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

Увімкнено функцію знімка екрана в Compizменеджері Windows, і мені потрібно надати командний рядок, щоб скопіювати файл зображення знімка в буфер обміну.

Відповіді:


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

Приклад в compiz

Потім ви зможете вставити його в будь-який інший х додаток


3

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

Редагувати :

У цій публікації обговорюються програми скріншотів командного рядка: http://www.linux.com/archive/feed/57772, у тому числі scrot. Це зі scrotсторінки man:

scrot - утиліта захоплення екрана, що використовує бібліотеку imlib2 для придбання
       і зберігати зображення. мошонка має кілька варіантів, детально описаних нижче. Вкажіть
       [файл] як ім'я файлу для збереження екрана.

Останнім варіантом є знайти додаток X, який просто натискає знімок екрана при натисканні (без запитів, діалогових вікон тощо), призначить його комбінації гарячих клавіш і використовувати xdotoolдля імітації цього натискання клавіші з командного рядка ??


@OP, чи справді вам потрібен інструмент командного рядка, чи ви просто намагаєтесь зробити скріншот у буфер обміну? Там набагато простіше шлях , що
Джеремі

Так, мені потрібен інструмент командного рядка.
Xiè Jìléi

На жаль, обидва xclipі xselне працюють із зображеннями, вони працюють лише з текстовим вмістом.
Xiè Jìléi

Правильно, моє погано, я не намагався вставити в графічну програму, я лише спробував xclip < image.jpgі xclip -o > image2.jpgяка працює, але марно; (
Джеремі

Я перевірив scrot, він добре працює, щоб отримати скріншот прямо у файл, але він не може потрапити в буфер обміну: /
Джеремі

2

Я б відключив функцію скріншоту Compiz, просто перейдіть до System-> Preferences-> Keyboard Shortcuts(під Desktopкатегорією) і прив'яжіть Print ScreenдоTake a Screenshot

введіть тут опис зображення


Тепер, коли ви потрапляєте PrintScreenна екран, зніматиметесь із можливістю копіювання у буфер обміну або просто для збереження файлу.

введіть тут опис зображення


Ні, мені подобається, що походить функція зняття екрана Compiz.
Xiè Jìléi

Невелике запитання, як зробити кнопку "Екран друку" в SU?
Xiè Jìléi

2
@ 谢 继 雷 о просто покладіть потрібну кнопку між <kbd> & </kbd>
Sathyajith Bhat

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 еквівалентно% Y-% m-% d (формат дати ISO 8601).

% T Час у 24-годинній нотації (% H:% M:% S).

%F_%T_надрукує щось на кшталт: 2018-06-17_02:52:19_тобто, ваша поточна мітка часу. Ви можете налаштувати формат відповідно до своїх вимог. Зверніться $ man strftimeза додатковою допомогою.

$wx$h є частиною внутрішніх специфікаторів мошонки.

$ w ширина зображення
$ h висота зображення

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.