Kopieren Sie das Bild von der Befehlszeile in die Zwischenablage

22

Gibt es in einer Bash eine Möglichkeit, ein Bild in die Zwischenablage zu kopieren?

Zum Beispiel, wenn es ein Bild gibt, mypic.pngmöchte ich einen clipcopy mypic.pngsolchen Befehl haben , dass ich zum Beispiel inkscape gehen und es danach einfügen kann.

Schüler
quelle
Dies sollte in zwei Schritten erfolgen: 1. Welche Daten erwartet Inkscape in der Zwischenablage? ZB Dateiinhalt oder Dateipfad. Ich stelle mir Inhalte vor, da der Weg mit trivial ist xsel -b? 2. Wie Sie diese Daten in die Zwischenablage bekommen.
Ciro Santilli新疆改造中心法轮功六四事件
mögliche Cross - Site - Duplikat: superuser.com/questions/301851/...
Ciro Santilli新疆改造中心法轮功六四事件
Allgemeinere Frage für jeden Dateityp: superuser.com/questions/796376/…
Ciro Santilli
Wenn Sie ImageMagick installiert haben, ist der Befehl meines Erachtens convert ... clipboard:(... sind die anderen Argumente einschließlich Ihres Dateinamens).
Deathgrip

Antworten:

9

Dieses Python-Skript von cheshirekow behauptet, zu tun, was Sie wollen.

#! /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]);
Mika Fischer
quelle
Danke, es funktioniert, um in libreoffice einzufügen, aber das Einfügen in inkscape nicht.
Student
Schön, es funktioniert gut mit Einfügen in xournal.
Keivan
9

Sie können dafür CopyQ verwenden . Von der Website:

Zwischenablage-Manager mit erweiterten Funktionen

  • CopyQ ist ein Zwischenablage-Manager mit durchsuchbarem und bearbeitbarem Verlauf.
  • Unterstützt Linux und Windows.
  • Experimentelle Unterstützung für OS X 10.9+.
  • Speichern Sie Text, HTML, Bilder und jedes andere benutzerdefinierte Format.
  • Erweiterte Befehlszeilenschnittstelle und Skripterstellung.

So kopieren Sie ein Bild (Sie müssen den MIME-Typ angeben):

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

So kopieren Sie eine Datendatei (Sie müssen den MIME-Typ angeben):

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

Weitere Dokumentation und Verwendungsbeispiele finden Sie im Wiki .

Siehe auch:

Landroni
quelle
Ihre erste Option mit PNG funktioniert großartig! Vielen Dank!
Edenshaw
5

Ich habe bearbeitet @don_crissti ‚s Antwort Pipeeingabe zu ermöglichen:

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

Hier ist ein kurzes Bash-Skript, das xclipzum Kopieren einer Datei verwendet wird. Sollte mit einfügen können 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"

Dank an...

jozxyqk
quelle
Dies kopiert gut ins Büro, aber nicht ins Xournal!
Keivan