我正在尝试保存已复制到剪贴板的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问题的任何变通方法?
答案 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);
}
}