2011-07-27 22 views
10

Me gustaría acceder a los gráficos en el portapapeles de Linux para guardarlo como un archivo. Estoy haciendo esto en un programa de Python/Tkinter, así que pregunté al respecto (http://stackoverflow.com/questions/6817600/save-the-image-in-the-clipboatd-in-python-tkinter) pero internamente (en python) no hay esperanza.imagen de Linux desde el portapapeles

En su lugar, puedo aceptar el uso de una utilidad externa para hacerlo, pero no puedo encontrar uno.

¿Conoce alguna utilidad basada en terminal capaz de tomar el contenido del portapapeles y guardarlo como un archivo de imagen?

+0

Quizás esto ayude a http://forums.debian.net/viewtopic.php?f=6&t=63433 – lhf

+0

gracias, pero esperaba algo más general, capaz de tomar el contenido del portapapeles, no una especie de instantánea utilidad. Todavía no puedo creer que tal utilidad no exista, aunque leí en alguna parte que la administración del portapapeles X11 es un desastre ... – alessandro

Respuesta

11

No pude encontrar ninguna herramienta para hacerlo, así que escribí este pequeño script de Python. Requiere 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

Me acabo de dar cuenta de que alguien finalmente resolvió mi problema, gracias, ¡buen trabajo! – alessandro

+0

¡Gracias por el guión! Espero que no te importe que creé un [Github Gist público] (https://gist.github.com/orschiro/8b9a1ddadb696c2b4587#file-image-clipboard-to-file-py) para él, para los contribuidores de distribución fácilmente paquete. – orschiro

3

Copia:

xclip -selection clipboard in.png 

Shorter:

xclip -se c in.png 

Pegar:

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

Shorter versión:

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

A partir de este Unix & pregunta Linux:

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

También puede utilizar image/tiff y image/jpeg.

+4

Muestra error en mi computadora .. 'Error: imagen de destino/png no disponible' –

+0

@MerhawiFissehaye, primero ejecute' xclip -o -target OBJETIVOS -papeles de selección' para saber qué objetivos se pueden aplicar para el portapapeles 'actual' datos. – rraadd88

Cuestiones relacionadas