Skopiuj obraz z wiersza polecenia do schowka

22

Czy jest jakiś sposób na szybkie skopiowanie zdjęcia do schowka?

Na przykład, jeśli istnieje obrazek mypic.png, chcę mieć takie polecenie clipcopy mypic.png, że mogę na przykład przejść do Inkscape i wkleić go później.

student
źródło
Należy to podzielić na dwa etapy: 1. jakich danych spodziewa się Inkscape w schowku? Np. Zawartość pliku lub ścieżka pliku. Wyobrażam sobie treść, ponieważ ścieżka jest trywialna xsel -b? 2. Jak zdobyć te dane do schowka.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
możliwy duplikat witryny: superuser.com/questions/301851/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Bardziej ogólne pytanie dla dowolnego typu pliku: superuser.com/questions/796376/...
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Jeśli masz zainstalowany ImageMagick, uważam, że polecenie to convert ... clipboard:(... są inne argumenty, w tym nazwa pliku).
Deathgrip,

Odpowiedzi:

9

Ten skrypt Pythona autorstwa cheshirekow twierdzi, że robi to, co chcesz.

#! /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
źródło
Dzięki, wkleja się w libreoffice, ale wklejanie w inkscape nie.
student
Fajny, działa dobrze przy wklejaniu do xournal.
Keivan,
9

Możesz użyć CopyQ do tego . Ze strony:

Menedżer schowka z zaawansowanymi funkcjami

  • CopyQ to menedżer schowka z historią do przeszukiwania i edycji.
  • Obsługuje Linux i Windows.
  • Eksperymentalne wsparcie dla OS X 10.9+.
  • Przechowuj tekst, HTML, obrazy i każdy inny niestandardowy format.
  • Zaawansowany interfejs wiersza poleceń i skrypty.

Aby skopiować obraz (musisz wskazać typ MIME):

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

Aby skopiować plik danych (musisz wskazać typ MIME):

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

Sprawdź ich wiki, aby uzyskać więcej dokumentacji i przykładów użycia .

Zobacz też:

landroni
źródło
Twoja pierwsza opcja przy użyciu png działa świetnie! Dziękuję Ci!
Edenshaw
5

Mam edytowany @don_crissti „s odpowiedzi , aby umożliwić wejście rury:

#!/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
źródło
5

Oto krótki skrypt bash, który służy xclipdo kopiowania pliku. Powinny być w stanie wkleić 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"

Dzięki...

jozxyqk
źródło
To pasuje do biura, ale nie do xournal!
Keivan,