Copia l'immagine dalla riga di comando negli Appunti


22

C'è un modo in un bash per copiare un'immagine negli appunti?

Ad esempio, se c'è un'immagine mypic.pngche voglio avere un comando come clipcopy mypic.pngtale, posso andare ad esempio a inkscape e incollarlo in seguito.


Questo dovrebbe essere interrotto in due passaggi: 1. quali dati si aspetta da Inkscape negli appunti? Ad esempio il contenuto del file o il percorso del file. Immagino contenuti dal momento che il percorso è banale con xsel -b? 2. Come ottenere quei dati negli Appunti.
Ciro Santilli 13 改造 中心 法轮功 六四 事件



Se hai ImageMagick installato, credo che il comando sia convert ... clipboard:(... sono gli altri argomenti incluso il tuo nome file).
Deathgrip,

Risposte:


9

Questo script Python di Cheshirekow afferma di fare ciò che vuoi.

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

Grazie, funziona per passare a libreoffice, ma incollarlo in inkscape no.
studente

Bello, funziona bene incollando in xournal.
Keivan,

9

È possibile utilizzare CopyQ per questo. Dal sito Web:

Gestione degli appunti con funzionalità avanzate

  • CopyQ è un gestore di appunti con cronologia ricercabile e modificabile.
  • Supporta Linux e Windows.
  • Supporto sperimentale per OS X 10.9+.
  • Memorizza testo, HTML, immagini e qualsiasi altro formato personalizzato.
  • Interfaccia della riga di comando avanzata e script.

Per copiare un'immagine (è necessario indicare il tipo MIME):

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

Per copiare un file di dati (è necessario indicare il tipo MIME):

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

Controlla la loro wiki per ulteriori documentazione ed esempi di utilizzo .

Guarda anche:


La tua prima opzione usando png funziona alla grande! Grazie!
Edenshaw,

5

Ho modificato la risposta di @don_crissti per consentire l'input di pipe:

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

5

Ecco un breve script bash che usa xclipper copiare un file. Dovrebbe essere in grado di incollare 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"

Grazie a...


Questo va bene in ufficio, ma non in xournal!
Keivan,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.