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.


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新疆改造中心法轮功六四事件


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]);

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:


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)

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...


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.