从剪贴板保存PNG时的黑色图像

时间:2011-07-20 22:57:38

标签: c# wpf

我正在尝试保存已复制到剪贴板的PNG图像,但它要么是纯黑色,要么是透明区域周围的黑色。

以下是我用来捕获和保存图像的代码

var clipboardImage = (InteropBitmap)Clipboard.GetImage();

Image.SaveImage(clipboardImage, Path.Combine(Config.App.ApplicationDataImagesPath, string.Format("{0}.{1}", imageId, "png")));

public static void SaveImage(BitmapSource bitmapImage, string filename)
{
    using (var fileStream = new FileStream(filename, FileMode.Create))
    {
        var pngBitmapEncoder = new PngBitmapEncoder();
        pngBitmapEncoder.Frames.Add(BitmapFrame.Create(bitmapImage));
        pngBitmapEncoder.Save(fileStream);
        fileStream.Close();
        fileStream.Dispose();
    }           
}

有没有人知道为什么它不会破坏PNG的alpha通道?

由于

编辑:我应该提到从Internet Explorer 9复制图像时发生黑色图像。从Chrome或Firefox复制图像时效果很好。 IE9问题的任何变通方法?

1 个答案:

答案 0 :(得分:3)

如果这样做会发生什么:

Clipboard.GetImage().Save ("XXX.png", System.Drawing.Imaging.ImageFormat.Png);

编辑 - 对于WPF试试这个:

public static void SaveClipboardImageToFile(string filePath)
{
    var image = Clipboard.GetImage();
    using (var fileStream = new FileStream(filePath, FileMode.Create))
    {
        BitmapEncoder encoder = new PngBitmapEncoder();
        encoder.Frames.Add(BitmapFrame.Create(image));
        encoder.Save(fileStream);
    }
}