Sao chép hình ảnh từ dòng lệnh vào clipboard


22

Có cách nào trong một bash để sao chép một hình ảnh vào clipboard?

Ví dụ: nếu có một hình ảnh mypic.pngtôi muốn có một lệnh như clipcopy mypic.pngvậy tôi có thể lấy ví dụ để inkscape và dán nó sau đó.


Điều này nên được chia thành hai bước: 1. Inkscape dự kiến ​​sẽ có dữ liệu gì trong bảng tạm? Ví dụ: nội dung tệp hoặc đường dẫn tệp. Tôi tưởng tượng nội dung vì đường dẫn là tầm thường với xsel -b? 2. Làm thế nào để có được dữ liệu đó trên clipboard.
Ciro Santilli 心 心

trang web chéo có thể trùng lặp của: superuser.com/questions/301851/
Ciro Santilli 改造 心 心

Câu hỏi chung hơn cho bất kỳ loại tệp nào: superuser.com/questions/796376/ Kẻ
Ciro Santilli 改造 心 心 事件

Nếu bạn đã cài đặt ImageMagick, tôi tin rằng lệnh là convert ... clipboard:(... là các đối số khác bao gồm tên tệp của bạn).
Deathgrip

Câu trả lời:


9

Kịch bản python này của cheshirekow tuyên bố sẽ làm những gì bạn muốn.

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

Cảm ơn, nó hoạt động để vượt qua libreoffice, tuy nhiên dán vào inkscape thì không.
sinh viên

Đẹp một, nó hoạt động tốt với dán vào xournal.
Keivan

9

Bạn có thể sử dụng CopyQ cho việc này. Từ trang web:

Trình quản lý Clipboard với các tính năng nâng cao

  • CopyQ là trình quản lý clipboard với lịch sử có thể tìm kiếm và chỉnh sửa.
  • Hỗ trợ Linux và Windows.
  • Hỗ trợ thử nghiệm cho OS X 10.9+.
  • Lưu trữ văn bản, HTML, hình ảnh và bất kỳ định dạng tùy chỉnh khác.
  • Giao diện dòng lệnh và kịch bản nâng cao.

Để sao chép một hình ảnh (bạn cần chỉ ra loại MIME):

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

Để sao chép tệp dữ liệu (bạn cần chỉ ra loại MIME):

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

Kiểm tra wiki của họ để biết thêm tài liệu và ví dụ sử dụng .

Xem thêm:


Tùy chọn đầu tiên của bạn sử dụng png hoạt động tuyệt vời! Cảm ơn bạn!
Edenshaw

5

Tôi đã chỉnh sửa câu trả lời của @don_crissti để cho phép đầu vào đường ống:

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

Đây là một tập lệnh bash ngắn sử dụng xclipđể sao chép một tập tin. Nên có thể dán với 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"

Nhờ vào...


Bản sao này vào văn phòng tốt, nhưng không vào xournal!
Keivan

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.