如何使用命令行将图像从文件复制到剪贴板?


23

我想编写一个脚本来拍摄图像文件,将其缩放50%并将其放在剪贴板上,以便可以轻松粘贴。我遇到的问题是如何在剪贴板上放置图像。

我知道xclip,但是AFAICS只处理文本。如果没有生成图像的应用程序停在剪贴板上,是否可以在剪贴板上显示图像?-对不起,我不确定剪贴板的工作原理!

编辑

多亏了以下Florian的回答,我才能实现我想要的目标,即截取屏幕截图并自动将其缩放到最大600px宽(例如,粘贴到电子邮件中)。我面临的另一个问题是Thunderbird无法image/png从剪贴板接受。我通过将其转换text/htmldataurl 来解决这个问题。如果有人发现它有用,这是我的代码:

#!/bin/bash
TMP=/tmp/screenshot.png
function screenshotfail {
  notify-send -u low -i image "Screenshot failed."
  exit
}
# Take screenshot
gnome-screenshot -a -b -p -f "$TMP" || screenshotfail
# Ensure it's max 600px wide
mogrify -resize '>600x' "$TMP" || screenshotfail
# optimise the png if optipng is installed.
which optipng >/dev/null && optipng "$TMP"

# Copy to clipboard.
#
# This is what does not work for Thunderbird:
#   xclip -selection clipboard -t image/png <"$TMP" || screenshotfail
# But this does:
echo "<img src='data:image/png;base64,"$(base64 -w0 "$TMP")"' />" | \
  xclip -selection clipboard -t text/html || screenshotfail

# Remove the temp file.
rm -f "$TMP"

# Notify user.
notify-send -u low -i image "600px screenshot copied to clipboard"

Answers:


32

使用-t选项指定内容类型,例如

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

-t不适用于我的xclip版本0.12
Irfan,

@ Power-Inside:在16.10上使用xclip 0.12为我工作
Florian Diesch

1
要使其在17.10上运行,我必须这样做:xclip -selection clipboard -t image/png -o > example.png
Anake

在我的Ubuntu 16.04.5 LTS上与xclip版本0.12一起使用
冠军

仅适用于Gnome之类的GTK环境,不适用于KDE / plasma或LXQT之类的Qt环境。
noraj
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.