【问题标题】:.NET: Saving Clipboard Image to PNG fails.NET:将剪贴板图像保存为 PNG 失败
【发布时间】:2011-04-07 11:41:58
【问题描述】:

我在将剪贴板图像保存为 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);

上面的代码生成了一个包含不可见内容的图像文件,根据查看者(当从 Paint 复制时,ctrl-c 时)显示为全黑或全白。这让我认为这与透明度有关......

【问题讨论】:

  • 能否提供代码示例?

标签: .net png clipboard paint jpeg


【解决方案1】:

您的问题与我描述的here 非常相似...我建议的解决方案可能对您有用。

【讨论】:

  • 谢谢托马斯!我使用了您的 ImageFromClipboardDib,效果很好!我尝试了 CopyPixels 并自己重置了 alpha 通道,但很成功。来自 copypixels 的数据只有白色 (255)。但是你的代码成功了!
  • 这里也一样。无法弄清楚为什么从 MSPaint 复制的图像是空的。 Thomas 的代码成功了。
【解决方案2】:

我会首先尝试使用ClipSpy 之类的方法来检查哪个应用程序将哪种类型的内容放在剪贴板上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    相关资源
    最近更新 更多