Copie la image de la línea de command al portapapeles

¿Hay alguna manera en un bash de copyr una image en el portapapeles?

Por ejemplo, si hay una image mypic.png , quiero tener un command como clipcopy mypic.png modo que pueda ir, por ejemplo, a inkscape y pegarlo después.

Esta secuencia de commands python por cheshirekow afirma hacer lo que quieras.

 #! /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]); 

Puede usar CopyQ para esto. Desde el website:

Administrador de portapapeles con funciones avanzadas

  • CopyQ es el administrador del portapapeles con historial que se puede search y editar.
  • Admite Linux y Windows.
  • Soporte experimental para OS X 10.9+.
  • Almacene text, HTML, imágenes y cualquier otro formatting personalizado.
  • Interfaz de command-line avanzada y scripting.

Para copyr una image (debe indicar el tipo MIME):

 copyq write image/png - < file.png && copyq select 0 

Para copyr un file de datos (debe indicar el tipo MIME):

 copyq write application/pdf - < file.pdf && copyq select 0 

Consulte su wiki para get más documentation y ejemplos de uso .

Ver también:

  • ¿Una herramienta para copyr y pegar en el portapapeles de la command-line?

He editado la respuesta de @don_crissti para permitir la input de la tubería:

 #!/usr/bin/env python import sys from gi.repository import Gtk, Gdk, GdkPixbuf def store(pixbuf): clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) clipboard.set_image(pixbuf) clipboard.store() def copy_image(f): image = Gtk.Image.new_from_file(f) if image.get_storage_type() == Gtk.ImageType.PIXBUF: pixbuf = image.get_pixbuf() store(pixbuf) else: print("Copying failed") def copy_pixbuf(data): loader = GdkPixbuf.PixbufLoader() loader.write(data) loader.close() pixbuf = loader.get_pixbuf() store(pixbuf) if sys.stdin.isatty(): if len(sys.argv) != 2: print("Usage: image-to-clipboard.py image") else: f = sys.argv[1] copy_image(f); else: data = sys.stdin.read() copy_pixbuf(data) 

Aquí hay un breve script bash que usa xclip para copyr un file. Debería poder pegar con ctrl-v .

 #!/bin/bash command -v xclip >/dev/null 2>&1 || { echo "Need command xclip. Aborting." >&2; exit 1; } [[ -f "$1" ]] || { echo "Error: Not a file." >&2; exit 1; } TYPE=$(file -b --mime-type "$1") xclip -selection clipboard -t "$TYPE" < "$1" 

Gracias a…

Vea la respuesta aquí: https://askubuntu.com/a/759660/187689

xclip -selection clipboard -t image/png -i example.png