2011-07-27 36 views
10

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

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

你知道任何基于终端的工具能够将剪贴板内容保存为图像文件吗?

+0

也许这有助于http://forums.debian.net/viewtopic.php?f=6&t=63433 – lhf

+0

谢谢,但我希望在一些更一般的东西,能够采取剪贴板内容,而不是一种快照效用。我仍然无法相信这样的效用不存在,尽管我在某处读到X11剪贴板管理有点混乱...... – alessandro

回答

11

我找不到任何工具来做它,所以我写了这个小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" 
+0

我刚刚注意到有人终于解决了我的问题,谢谢 - 很好的工作! – alessandro

+0

感谢您的脚本!我希望你不要介意我为它创建了一个[public Github Gist](https://gist.github.com/orschiro/8b9a1ddadb696c2b4587#file-image-clipboard-to-file-py),供分发贡献者轻松使用打包它。 – orschiro

3

复制:

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/tiffimage/jpeg

+4

它在我的计算机上显示错误..'错误:目标图像/ png不可用' –

+0

@MerhawiFissehaye,首先运行'xclip -o -target TARGETS -selection clipboard'来知道哪些所有目标可以应用于'当前'剪贴板数据。 – rraadd88