首页 > 解决方案 > 尝试保存位图时在 GDI+ 中发生一般错误

问题描述

我正在尝试在 C# Windows 窗体中截取屏幕截图。代码(来自https://www.c-sharpcorner.com/UploadFile/2d2d83/how-to-capture-a-screen-using-C-Sharp/):

Bitmap captureBitmap = new Bitmap(1600, 900, PixelFormat.Format32bppArgb);
Rectangle captureRectangle = Screen.AllScreens[0].Bounds;
Graphics captureGraphics = Graphics.FromImage(captureBitmap);
captureGraphics.CopyFromScreen(captureRectangle.Left, captureRectangle.Top, 0, 0, captureRectangle.Size);
captureBitmap.Save(@"C:\Screenshot.jpg", ImageFormat.Jpeg);

它抛出此错误:GDI+ 中发生一般错误(在 captureBitmap.Save 中)。我能做些什么?我尝试使用 captureBitmap.Dispose() 但它仍然不起作用。

标签: c#winforms

解决方案


你可以替换你的最后一行

captureBitmap.Save(@"C:\Screenshot.jpg", ImageFormat.Jpeg);

string outputFileName = @"C:\Screenshot.jpg";
using (MemoryStream memory = new MemoryStream())
{
    using (FileStream fs = new FileStream(outputFileName, FileMode.Create, FileAccess.ReadWrite))
    {
        captureBitmap.Save(memory, ImageFormat.Jpeg);
        byte[] bytes = memory.ToArray();
        fs.Write(bytes, 0, bytes.Length);
    }
}

原因和链接供进一步阅读


推荐阅读