将剪贴板设置为图像 - pbcopy

问题描述 投票:0回答:6

如何使用 pbcopy 将图像设置为剪贴板?

这不起作用:

cat image.png | pbcopy
macos bash clipboard pbcopy
6个回答
25
投票

更新答案

实际上,您可以在命令行中使用 Applescript 将 JPEG 图像放入剪贴板,如下所示:

osascript -e 'set the clipboard to (read (POSIX file "/Users/mark/Desktop/a.jpg") as JPEG picture)'

然后您可以使用以下命令检查剪贴板上的内容:

osascript -e 'clipboard info'

JPEG picture, 175960, «class 8BPS», 641904, GIF picture, 124637, «class jp2 », 102086, TIFF picture, 1481282, «class PNGf», 412940, «class BMP », 1477734, «class TPIC», 609835

还可以使用通常的 -V 将图像粘贴到文档中。

原答案

可以做到这一点,无需编译任何额外的软件,只需使用OS X中提供的工具即可。基本上,剪贴板无法存储二进制,所以你需要

uuencode
将你的二进制图像转换为简单的ASCII数据,如下所示:

# Copy image to clipboard
uuencode SomeFile.jpg - | pbcopy

uudecode
当以其他方式返回时

# Paste from clipboard to image file
pbpaste | uudecode -o AnotherFile.jpg

13
投票

如上所述,这不适用于

pbcopy
,但您可以编写一些 Objective-C 程序来执行此操作:http://www.alecjacobson.com/weblog/?p=3816 。然后你就可以发出:

cat image.png | impbcopy -

3
投票

来自文档:

输入将作为 ASCII 数据放置在粘贴板中,除非它以封装 PostScript (EPS) 文件头或富文本格式 (RTF) 文件头开头,在这种情况下,它会作为这些数据类型之一放置在粘贴板中。

听起来不支持图像数据,所以不行。


1
投票

如何将 PNG 图像复制到 Macos 剪贴板的实际(或最终)答案隐藏在 Mark 答案的评论中。由于从马克的回答中来看并不那么明显,而且我花了一段时间才找到它,所以我将其作为答案留在这里:

osascript -e 'set the clipboard to (read (POSIX file "/Users/mark/Desktop/a.png") as  {«class PNGf»})'

1
投票

适用于图像和动画 gif 的另一种选择是:

osascript -e 'tell app "Finder" to set the clipboard to ( POSIX file "<PATH_TO_IMAGE>" )'

0
投票

要使 osascript 正常工作(适用于任何文件类型),请勿使用读取并使用绝对路径:

osascript -e 'set the clipboard to (POSIX file "/Full/Path/To/image.png")'

因此对于当前目录中的文件(注意外部双引号):

osascript -e "set the clipboard to (POSIX file \"$PWD/image.png\")"
© www.soinside.com 2019 - 2024. All rights reserved.