问题 从剪贴板的linux图像


我想访问linux剪贴板中的图形,将其保存为文件。 我在Python / Tkinter程序中这样做,所以我问过它(http://stackoverflow.com/questions/6817600/save-the-image-in-the-clipboatd-in-python-tkinter)但内部(在python中)没有希望。

相反,我可以接受使用外部实用程序来做到这一点 - 但我找不到一个。

您是否知道任何基于终端的实用程序能够获取剪贴板内容并将其另存为图像文件?


9372
2017-07-27 08:35


起源

也许这有帮助 forums.debian.net/viewtopic.php?f=6&t=63433 - lhf
谢谢,但我希望更通用,能够获取剪贴板内容,而不是一种快照实用程序。我仍然无法相信这样的实用程序不存在,虽然我在某处读到X11剪贴板管理有点混乱...... - alessandro


答案:


我找不到任何工具,所以我写了这个小的Python脚本。它需要pygtk。

#!/usr/bin/python
"""
Save image from clipboard to file
"""

import sys
import glob
from optparse import OptionParser

def def_file():
    """
    Return default file name
    """
    files = glob.glob("img???.png")
    if len(files) < 1:
        return 'img001.png'
    maxf = 0
    for f in files:
        try:
            n = int(f[3:6])
            maxf = max(n, maxf)
        except ValueError:
            pass
    return 'img{:03d}.png'.format(maxf+1)


usage = """%prog [option] [filename]
Save image from clipboard to file in PNG format."""

op = OptionParser(usage=usage)
op.add_option("-o", "--open", action="store_true", dest="open", default=False, 
        help="Open saved file with default program (using xdg-open)")
(options, args) = op.parse_args()

if len(args) > 1:
    parser.error("Only one argument expected")
    sys.exit(1)
elif len(args) == 1:
    fname = args[0]
else:
    fname = def_file()

import gtk
clipboard = gtk.clipboard_get()
image = clipboard.wait_for_image()
if image is not None:
    image.save(fname, "png")
    print "PNG image saved to file", fname
    if options.open:
        import subprocess
        subprocess.call(["xdg-open", fname])
else:
    print "No image in clipboard found"

12
2017-08-25 12:36



我刚注意到有人终于解决了我的问题,谢谢 - 干得好! - alessandro
谢谢你的剧本!我希望你不介意我创造了一个 公共Github Gist 对于它,分发贡献者可以轻松打包它。 - orschiro


复制:

xclip -selection clipboard in.png

短:

xclip -se c in.png

糊:

xclip -selection clipboard -target image/png -out > out.png

更短的版本:

xclip -se c -t image/png -o > out.png

从这个Unix和Linux问题:

https://unix.stackexchange.com/questions/145131/copy-image-from-clipboard-to-file

你也可以使用 image/tiff 和 image/jpeg


3
2018-01-17 03:25



它在我的电脑上显示错误.. Error: target image/png not available - Merhawi Fissehaye
@MerhawiFissehaye,第一次跑 xclip -o -target TARGETS -selection clipboard 知道哪些目标可以应用于“当前”剪贴板数据。 - rraadd88


看一眼 XSEL 和 XCLIP

否则,你可能会发现一些 有关维基百科的更多信息


0
2017-08-10 23:42