คัดลอกรูปภาพจากบรรทัดคำสั่งไปยังคลิปบอร์ด


22

มีวิธีในการทุบตีเพื่อคัดลอกรูปภาพไปยังคลิปบอร์ดหรือไม่?

ตัวอย่างเช่นหากมีรูปภาพที่mypic.pngฉันต้องการให้มีคำสั่งclipcopy mypic.pngเช่นนั้นฉันสามารถไปตัวอย่างเพื่อ inkscape และวางมันในภายหลัง


สิ่งนี้ควรจะเสียในสองขั้นตอน: 1. ข้อมูลใดที่ Inkscape คาดว่าจะอยู่บนคลิปบอร์ด? เช่นเนื้อหาไฟล์หรือเส้นทางของไฟล์ ฉันจินตนาการถึงเนื้อหาตั้งแต่เส้นทางที่ไม่สำคัญด้วยxsel -b? 2. วิธีรับข้อมูลนั้นบนคลิปบอร์ด
Ciro Santilli 新疆改造中心法轮功六四事件

ไซต์ข้ามที่เป็นไปได้ซ้ำซ้อนของ: superuser.com/questions/301851/…
Ciro Santilli 新疆改造中心中心法轮功六四事件

คำถามทั่วไปเพิ่มเติมสำหรับประเภทไฟล์ใด ๆ : superuser.com/questions/796376/…
Ciro Santilli 新疆改造中心中心法轮功六四事件

หากคุณติดตั้ง ImageMagick ไว้ฉันเชื่อว่าคำสั่งคือconvert ... clipboard:(... คืออาร์กิวเมนต์อื่นรวมถึงชื่อไฟล์ของคุณ)
Deathgrip

คำตอบ:


9

สคริปต์ python นี้โดยcheshirekowอ้างว่าทำสิ่งที่คุณต้องการ

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

ขอขอบคุณการทำงานผ่านไปยัง libreoffice แต่การวางลงใน inkscape ไม่ได้
นักเรียน

นิสัยดีมันใช้งานได้ดีกับการวางลงใน xournal
Keivan

9

คุณสามารถใช้CopyQสำหรับสิ่งนี้ จากเว็บไซต์:

ผู้จัดการคลิปบอร์ดพร้อมคุณสมบัติขั้นสูง

  • CopyQ เป็นผู้จัดการคลิปบอร์ดที่มีประวัติค้นหาและแก้ไขได้
  • รองรับ Linux และ Windows
  • การสนับสนุนการทดลองสำหรับ OS X 10.9+
  • จัดเก็บข้อความ, HTML, รูปภาพและรูปแบบที่กำหนดเองอื่น ๆ
  • อินเตอร์เฟสบรรทัดคำสั่งและการสคริปต์ขั้นสูง

ในการคัดลอกภาพ (คุณต้องระบุประเภท MIME):

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

ในการคัดลอกไฟล์ข้อมูล (คุณต้องระบุประเภท MIME):

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

ตรวจสอบวิกิของพวกเขาสำหรับตัวอย่างเอกสารและการใช้งานเพิ่มเติม

ดูสิ่งนี้ด้วย:


ตัวเลือกแรกของคุณที่ใช้ png นั้นยอดเยี่ยม! ขอขอบคุณ!
Edenshaw

5

ฉันได้แก้ไข@don_crissti 's คำตอบที่จะช่วยให้การป้อนข้อมูลท่อ:

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

นี่คือสคริปต์ทุบตีสั้น ๆ ที่ใช้xclipในการคัดลอกไฟล์ 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"

ขอบคุณที่ ...


สำเนานี้เข้าสู่การปรับที่สำนักงาน แต่ไม่ได้ลงใน xournal!
Keivan

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.