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

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

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

我知道 xclip,但据我所知它只处理文本。是否可以在不放置生成图像的应用程序的情况下将图像放在剪贴板上?- 抱歉,我不确定剪贴板的内部工作原理!

编辑

感谢 Florian 在下面给出的回答,我能够实现我想要的,即截取屏幕截图并自动将其缩放到最大 600px 宽(例如粘贴到电子邮件中)。我面临的另一个问题是 Thunderbird 不会接受剪贴板中的图片。我通过将其转换为使用urlimage/png解决了这个问题。以下是我的代码,以防有人觉得有用:text/htmldata

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

答案1

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

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

相关内容