我一直在研究 Linux 设置上 X 剪贴板的奇怪行为。
我最初从网络浏览器复制了一张图像,后来在保存文件时发现该图像为 JPG 格式。但是,当我尝试将浏览器中复制的图像粘贴到 WhatsApp 中时,遇到一条错误消息:“您尝试添加的一张图像大于 16MB 限制。”
为了诊断这个问题,我采取了以下步骤:
直接图像保存:
- 直接从浏览器保存图像:结果为 1.7MB JPG。
剪贴板检查(初始):
- 用于
xclip
检查剪贴板内容。 - 发现图片被
text/html
格式引用了。输出中最初没有可用的 PNG 格式-t TARGETS
。$ xclip -o selection clipboard -t TARGETS TIMESTAMP TARGETS MULTIPLE text/html text/_moz_htmlcontext text/_moz_htmlinfo UTF8_STRING COMPOUND_TEXT TEXT STRING text/plain;charset=utf-8 text/plain text/x-moz-url-priv
- 上述目标中的其他选项不适用于 error
Error: target ... not available
。经检查目标为text/html
:$ xclip -o -selection clipboard -t text/html <meta http-equiv="content-type" content="text/html; charset=utf-8"><img src="https://i.redd.it/678a4i8vv7l01.jpg" alt="Flashed Libreboot to X200 using BeagleBone Black : thinkpad" class=" nofocus" tabindex="0" aria-label="Flashed Libreboot to X200 using BeagleBone Black : thinkpad" role="button">
剪贴板大小:
- 经过进一步检查,我发现剪贴板存储的是PNG格式的图像,大小超过16MB。
- 禁用互联网,从 Firefox 浏览器复制图像。
- 尝试在离线状态下粘贴,但现在
image/png
已启用目标。我将图像保存到文件中:
现在,$ xclip -o -selection clipboard -t image/png > /ramdisk/extracted_image.png
image/png
所有复制的图像都启用了目标。
剪辑曼测试:
- 禁用 Clipman 并再次尝试复制,但粘贴到 WhatsApp 时仍然存在较大的 PNG 问题。
GIMP 测试:
- 将图像复制到 GIMP 中。
xclip
现在显示与 PNG 相关的目标。
图像提取:
从剪贴板中提取图像:生成 18.1MB PNG。
$ \ls -l /ramdisk/extracted_image.png -rw-r--r-- 1 sourav sourav 18134833 Aug 16 19:44 /ramdisk/extracted_image.png
Clipman 的缓存版本是稍小的 16MB PNG。
$ \ls -l ~/.cache/xfce4/clipman/image0.png -rw-r--r-- 1 sourav sourav 600951 Aug 16 20:55 /home/sourav/.cache/xfce4/clipman/image0.png
压缩检查:
pngcheck
在两个图像上 运行。$ pngcheck /home/sourav/.cache/xfce4/clipman/image0. OK: /home/sourav/.cache/xfce4/clipman/image0.png (4896x3264, 32-bit RGB+alpha, non-interlaced, 74.8%).
$ pngcheck /ramdisk/extracted_image.png OK: /ramdisk/extracted_image.png (4896x3264, 32-bit RGB+alpha, non-interlaced, 71.6%).
Exiftool 检查:
exiftool
在两个图像上 运行。$ exiftool /ramdisk/extracted_image.png /home/sourav/.cache/xfce4/clipman/image0.png ======== /ramdisk/extracted_image.png ExifTool Version Number : 12.60 File Name : extracted_image.png Directory : /ramdisk File Size : 18 MB File Modification Date/Time : 2023:08:16 19:44:02+05:30 File Access Date/Time : 2023:08:16 19:43:59+05:30 File Inode Change Date/Time : 2023:08:16 19:44:02+05:30 File Permissions : -rw-r--r-- File Type : PNG File Type Extension : png MIME Type : image/png Image Width : 4896 Image Height : 3264 Bit Depth : 8 Color Type : RGB with Alpha Compression : Deflate/Inflate Filter : Adaptive Interlace : Noninterlaced Significant Bits : 8 8 8 8 Image Size : 4896x3264 Megapixels : 16.0 ======== /home/sourav/.cache/xfce4/clipman/image0.png ExifTool Version Number : 12.60 File Name : image0.png Directory : /home/sourav/.cache/xfce4/clipman File Size : 16 MB File Modification Date/Time : 2023:08:16 19:50:18+05:30 File Access Date/Time : 2023:08:16 19:50:11+05:30 File Inode Change Date/Time : 2023:08:16 19:50:18+05:30 File Permissions : -rw-r--r-- File Type : PNG File Type Extension : png MIME Type : image/png Image Width : 4896 Image Height : 3264 Bit Depth : 8 Color Type : RGB with Alpha Compression : Deflate/Inflate Filter : Adaptive Interlace : Noninterlaced Significant Bits : 8 8 8 8 Image Size : 4896x3264 Megapixels : 16.0 2 image files read
从上述步骤可以看出,剪贴板将 JPG 图像存储为更大的 PNG 图像。这让我想到几个问题:
- 是什么导致了这种转变?是浏览器、X 系统还是其他工具?
- 为什么该图像最初仅以格式提供
text/html
,后来以 PNG 格式下载? - 剪贴板存储的确切数据是什么导致图像大小如此显着增大?