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.


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



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

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ż:


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)

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


To pasuje do biura, ale nie do xournal!
Keivan,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.