.NET:将剪贴板图像保存到PNG失败

时间:2011-04-07 11:41:59

标签: .net png clipboard paint jpeg

我将剪贴板图像保存到png有一个奇怪的问题。使用prtscr或剪切工具截取屏幕截图时,它可以与Clipboard.GetImage()和PngBitmapEncoder一起使用。但是当从Paint复制图像并执行相同操作时,我得到一个空图像。至少它在尝试查看时看起来是空的,尽管它似乎包含有效的PNG图像数据。使用Jpeg编码器时,它工作正常。什么是PNG和Paint的问题?它与透明度有关吗?

更新 澄清:我从剪贴板成功提取图像。如果图像首先从Paint复制,我只能使用PNGEncoder将其保存到光盘。我可以使用JpegEncoder保存绘画剪贴板图像但是我想使用PNG。

BitmapSource source = Clipboard.GetImage();
PngBitmapEncoder enc = new PngBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(source));
enc.Save(stream);

上面的代码生成一个包含不可见内容的图像文件,根据查看器的不同,呈现完全黑色或白色(从中复制时,从ctrl-c,从Paint中复制)。这让我觉得它与透明度有关......

2 个答案:

答案 0 :(得分:3)

您的问题与我所描述的问题非常相似here ...我建议的解决方案可能适合您。

答案 1 :(得分:0)

我会首先尝试像ClipSpy那样检查哪个应用程序将哪种类型的内容放在剪贴板上。