我正在尝试从剪贴板保存复制的图像,但它正在丢失其 alpha channel :
Image clipboardImage = Clipboard.GetImage();
string imagePath = Path.GetTempFileName();
clipboardImage.Save(imagePath);
如果我从 PhotoShop 或 IE/Firefox/Chrome 复制 32 位图像并运行上面的代码,输出将丢失其 alpha channel ,而是保存在黑色背景下。
图像保存为 PNG,其中可以包含 alpha channel 。
正确的数据似乎在剪贴板中,因为粘贴到其他应用程序(例如 PhotoShop)中会保留 alpha channel 。
谁能把我从痛苦中解救出来?
提前致谢!
更新:
// outputs FALSE
Debug.WriteLine(Image.IsAlphaPixelFormat(Clipboard.GetImage().PixelFormat));
以上内容表明,一旦从剪贴板中取出 alpha 数据,它就会丢失。也许我需要通过其他方式将其从剪贴板中取出?
最佳答案
不要调用 Clipboard.GetImage()
,而是尝试调用 Clipboard.GetDataObject()
这将返回一个 IDataObject,您可以依次调用 dataObject.GetFormats()
来查询它。 GetFormats()
返回剪贴板对象支持的类型格式 - 可能支持更精确的格式,您可以使用它来提取数据。
关于c# - 如何在不丢失 .NET 中的 alpha channel 的情况下从剪贴板中获取图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/998655/