将图像从命令行复制到剪贴板

将图像从命令行复制到剪贴板

bash 有没有办法将图片复制到剪贴板?

例如,如果有一张图片,mypic.png我想要一个类似的命令clipcopy mypic.png,这样我就可以转到 inkscape 并随后粘贴它。

答案1

您可以使用复制Q为了这。来自网站:

具有高级功能的剪贴板管理器

  • 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

检查他们的维基以了解更多信息文档和使用示例

也可以看看:

答案2

请参阅此处的答案:https://askubuntu.com/a/759660/187689

xclip -selection clipboard -t image/png -i example.png

答案3

这个Python脚本经过切什尔库夫声称做你想做的事。

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

答案4

我已经编辑过@don_crissti回答允许管道输入:

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

相关内容