gpt4 book ai didi

javascript - 如何在 Javascript 中获得透明的粘贴图像

转载 作者:可可西里 更新时间:2023-11-01 10:13:14 24 4
gpt4 key购买 nike

使用 event.clipboardData 检测粘贴的图像时,alpha channel 丢失。显然这是因为 Windows 将剪贴板中的图像存储为 24 位位图。

我听说有些应用程序会单独存储复制图像的透明度数据,但我不知道是否可以通过clipboardData访问。

这是我刚才写的粘贴图像检测器:
http://12Me21.github.io/paste/

最佳答案

我实际上对 Windows 剪贴板上的透明度主题进行了广泛研究,因此虽然我对 javascript 不是很熟悉,但我可以帮助您了解这些原则。

剪贴板与剪贴板类型的字符串 ID 系统一起工作,您可以同时将多个此类类型放在剪贴板上。近年来,许多应用程序(包括 MS Office 和 Gimp)开始使用“PNG”类型来表示透明图像,其中将包含原始字节流和 png 图像的字节。

然而,一种更常用的格式是 DIB 格式,它的剪贴板 ID 为“DeviceIndependentBitmap”,而这种格式可能...有问题。与 PNG 一样,它是原始字节流,但实际文件格式有点乱。有关 DIB 格式的更多信息,我建议您通读 this question and the answer I gave to it , 和 Device Independent Bitmap specsBITMAPINFOHEADER struct在 MSDN 上。长话短说,这是一种 32bpp RGB 格式,被滥用为(有时被误认为)ARGB。不过,我不知道在 Javascript 中将 DIB 解析成可用图像的可能性有多大,但是很多程序(包括谷歌浏览器)似乎只将它用作复制图像时放在剪贴板上的透明图像格式。

要完全支持透明粘贴,您可能需要同时支持 PNG 和 DIB 格式(考虑到围绕 DIB 的问题和争议,最好按此顺序)。 This answer可能会提供有关筛选剪贴板和解析 PNG 和 DIB 图像的一般方法的更多信息,尽管它是 C# 代码,而不是 Javascript。

关于javascript - 如何在 Javascript 中获得透明的粘贴图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50218144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com