c# - 尝试保存位图时在 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() 但它仍然不起作用。
解决方案
你可以替换你的最后一行
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);
}
}
原因和链接供进一步阅读
推荐阅读
- android - 在 Flutter 中合并/合并两个 InputDecoration 实例
- javascript - 登录没有发生,失败重定向一次又一次地调用
- telegram - 电报机器人:发送选项列表
- node.js - 节点不支持的平台
- python - 如何根据条件删除 XML 中的块
- javascript - 从 firebase 调用集合是空的
- performance - 就性能而言,顶级属性与伴侣对象
- python - TypeError:只能将 str(不是“numpy.float64”)连接到 str Python/MYSQL
- qt - 新 CLion 项目中的 QT6 编译错误
- python - 在 Python 中与 n 个选择的元素和有限的重复组合