我想将剪贴板设置为abc.jpg
图像格式的文件,这样我就可以将其粘贴到gpaint
等 X11 应用程序,可以吗?
我已经在窗口管理器中启用了屏幕快照功能Compiz
,并且我需要提供命令行将快照图像文件复制到剪贴板。
答案1
阴囊 + 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
是 scrot 内部说明符的一部分。
$w 图像宽度 $h 图像高度
因此最终的文件名将会类似于2018-06-17_02:52:19_1365x384.png
。
答案2
首先,安装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 也有类似的东西
答案3
答案4
我会禁用 Compiz 的截图功能,只需前往System
-> Preferences
-> Keyboard Shortcuts
(在Desktop
类别下)并绑定Print Screen到Take a Screenshot
现在,无论何时您点击PrintScreen屏幕截图,都可以选择复制到剪贴板,或者只是保存文件。