假设我选择一些 png 文件并运行以下命令:
xclip -selection clip -t image/png image.png
现在我的剪贴板中有该图像。如果我将它粘贴到接受图像的地方,它就会按预期粘贴,一切都很好。
现在,考虑一下我在 Firefox 地址栏或在文本字段中输入此内容时按 ctrl+V。文件的二进制内容被逐字粘贴到文本字段中,在某些情况下会导致浏览器挂起一阵子。
当然,我知道在那里粘贴图像没有意义,但有时我会不小心这样做,然后会导致问题。
当我使用 Firefox 的“复制图像”按钮粘贴我复制的图像时,当我尝试粘贴它时,它不会被粘贴,因此必须可以将其存储在剪贴板中以允许这种行为。
如何将图像放置在剪贴板中而不将图像作为二进制数据逐字粘贴到文本字段中?如果能够以某种方式将图像和文本字符串(例如图像的路径或其他内容)放置在剪贴板中,并让它在粘贴时选择合适的字符串,那就太棒了。
答案1
我像您一样使用 xclip 将图像复制到剪贴板,这是我得到的目标列表:
> xclip -selection clip -t TARGETS -o
TARGETS
image/png
现在,如果我从网页复制图像,我会得到:
> xclip -selection clip -t TARGETS -o
TIMESTAMP
TARGETS
MULTIPLE
SAVE_TARGETS
text/html
text/_moz_htmlinfo
text/_moz_htmlcontext
image/png
image/jpeg
image/x-icon
image/x-ico
image/x-win-bitmap
image/vnd.microsoft.icon
application/ico
image/ico
image/icon
text/ico
image/tiff
image/bmp
image/x-bmp
image/x-MS-bmp
例如,将目标设置为 text/html 会给出这样的输出
> xclip -sel c -t text/html -o
<img src="..." alt="...">>
很明显这是 xclip 问题,如上一个答案中所述
答案2
上述答案似乎不完整或不正确。从 Mozilla Firefox 复制图像后,我得到以下输出:
$ xclip -selection clip -t TARGETS -o
TIMESTAMP
TARGETS
MULTIPLE
SAVE_TARGETS
text/html
text/_moz_htmlinfo
text/_moz_htmlcontext
image/png
image/bmp
image/x-bmp
image/x-MS-bmp
image/x-icon
image/x-ico
image/x-win-bitmap
image/vnd.microsoft.icon
application/ico
image/ico
image/icon
text/ico
image/jpeg
正如前面的 awnser 所说,输出为“text/html”将输出一个有效的 html 文档,其中包含图像的链接。但是,如果您选择“image/png”(或任何类似选项),它将输出原始 png 数据。
Tl;dr:xclip -selection clip -t TARGETS -o
告诉您可以粘贴哪些格式。用于xclip -selection clip -t '$TYPE' -o
选择一个。这可以直接保存到文件中,并且几乎完全按照预期工作。