转换剪贴板图像时出错

时间:2015-03-31 01:28:54

标签: wpf

使用WPF 4.5

private Bitmap BitmapFromSource(BitmapSource bitmapsource)
{
    Bitmap bitmap;
    using (var outStream = new MemoryStream())
        {
            BitmapEncoder enc = new BmpBitmapEncoder();
            enc.Frames.Add(BitmapFrame.Create(bitmapsource));
            enc.Save(outStream);
            bitmap = new Bitmap(outStream);
        }
        return bitmap;
    }
}

然后再说:

if (Clipboard.ContainsImage())
{
    var bitmapSouce = Clipboard.GetImage();
    var bitmap = BitmapFromSource(bitmapSouce);
    var tmp = Path.GetTempFileName();
    bitmap.Save(tmp, ImageFormat.Png);
    ...

bitmap.Save()抛出ExternalException,“GDI +中的一般错误”

将剪贴板图像保存到磁盘真的很难吗?

1 个答案:

答案 0 :(得分:0)

没有必要从WPF System.Drawing.Bitmap创建BitmapSource(即WinForms)只是为了保存它。

你也可以直接保存到FileStream:

private void SaveBitmap(BitmapSource bitmapSource, string fileName)
{
    var enc = new PngBitmapEncoder();
    enc.Frames.Add(BitmapFrame.Create(bitmapSource));

    using (var outStream = new FileStream(fileName, FileMode.Create))
    {
        enc.Save(outStream);
    }
}

...

var bitmapSource = Clipboard.GetImage();
var tmp = Path.GetTempFileName();
SaveBitmap(bitmapSource, tmp);