将剪贴板设置为图像 - pbcopy

15

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

以下方法无效:

cat image.png | pbcopy
5个回答

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

同时,您可以使用OS X提供的工具将图像粘贴到文档中,方法是使用常规的-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

非常类似于另一个问题的答案 这里 - Brad Parks
原始答案非常完美 :) - user5395338
3
@DawnSong 请尝试使用 as «class PNGf» 而不是 as JPEG 图片 - luckman212
考虑使用“TIFF图片”代替。当您直接将截图复制到剪贴板时,macOS就是这样保存它的。 - user137369
我喜欢苹果把事情搞得比必要的复杂10倍,让人无语。 - Sukima
显示剩余3条评论

13

正如所述,这不适用于 pbcopy,但您可以编写一个小的 Objective-C 程序来实现此目的:http://www.alecjacobson.com/weblog/?p=3816。 然后您可以发出以下命令:

cat image.png | impbcopy -

1
你也可以结合ImageMagick的convert工具来使用。例如,将pdf的第一页复制为光栅图像:convert input.pdf[0] png:- | impbcopy - - Alec Jacobson

3

从文档中得知:

除非输入以Encapsulated PostScript(EPS)文件头或Rich Text Format(RTF)文件头开头,否则其将作为ASCII数据放置在剪贴板中。如果是这两种情况之一,则会将其作为其中一种数据类型放置在剪贴板中。

听起来似乎不支持图像数据,因此无法使用。


1
错误 - uuencode<->uudecode 允许复制和粘贴任何二进制文件到/从 PB。 - user5395338

1

如何将PNG图像复制到macOS剪贴板的实际(或最终)答案隐藏在Mark的回答的评论中。由于从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>" )'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接