Copie a imagem da linha de comando para a área de transferência

22

Existe uma maneira em um bash para copiar uma imagem para a área de transferência?

Por exemplo, se houver uma imagem mypic.png , quero ter um comando como clipcopy mypic.png , de modo que eu possa ir, por exemplo, ao inkscape e colá-lo depois.

    
por student 26.01.2012 / 20:17

5 respostas

9

Este script python por cheshirekow afirma fazer o que você quer.

#! /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]);
    
por 26.01.2012 / 21:01
9

Você pode usar CopyQ para isso. Do site:

Clipboard manager with advanced features

  • CopyQ is clipboard manager with searchable and editable history.
  • Supports Linux and Windows.
  • Experimental support for OS X 10.9+.
  • Store text, HTML, images and any other custom format.
  • Advanced command-line interface and scripting.

Para copiar uma imagem (você precisa indicar o tipo MIME):

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

Para copiar um arquivo de dados (você precisa indicar o tipo MIME):

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

Verifique o wiki deles para obter mais exemplos de documentação e uso .

Veja também:

por 05.04.2014 / 18:54
5

Aqui está um pequeno script que usa xclip para copiar um arquivo. Deveria ser capaz de colar com 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"

Obrigado a ...

por 01.03.2016 / 14:02
4

Eu editei @don_crissti 's answer para permitir entrada de tubo:

#!/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)
    
por 02.11.2014 / 22:44
1

Veja a resposta aqui: link

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

    
por 12.06.2017 / 23:01