C# 如何将图像保存为流?
我正在尝试创建一个屏幕截图,并将其从C#发送到我存储它的PHP 我创建了如下屏幕截图:C# 如何将图像保存为流?,c#,C#,我正在尝试创建一个屏幕截图,并将其从C#发送到我存储它的PHP 我创建了如下屏幕截图: Bitmap screenshot = TakeScreenshot(); 现在我试着: 但是,我使用了未分配的局部变量“myStream” 我做错了什么 功能: private Bitmap TakeScreenshot() { //Create a new bitmap. var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bound
Bitmap screenshot = TakeScreenshot();
现在我试着:
但是,我使用了未分配的局部变量“myStream”
我做错了什么
功能:
private Bitmap TakeScreenshot()
{
//Create a new bitmap.
var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
System.Drawing.Imaging.PixelFormat.Format32bppArgb);
// Create a graphics object from the bitmap.
using (var gfxScreenshot = Graphics.FromImage(bmpScreenshot))
{
// Take the screenshot from the upper left corner to the right bottom corner.
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
Screen.PrimaryScreen.Bounds.Y,
0,
0,
Screen.PrimaryScreen.Bounds.Size,
CopyPixelOperation.SourceCopy);
}
return bmpScreenshot;
}
你说的
Stream
是指FileStream
,MemoryStream
,什么?不管是什么情况,只要将变量初始化为所需的适当类型的流即可
例如:
using(var myStream = new MemoryStream())
{....}
您必须在使用流之前初始化它
using (MemoryStream myStream = new MemoryStream()) {
screenshot.Save(myStream, System.Drawing.Imaging.ImageFormat.Gif);
}
使用
关闭并处置流的要点。@BradleyUffner-尽管保持一致性很好,但您不必处置MemoryStream
实例,但没有需要释放的非托管资源。如果查看MemoryStream
中的Dispose
实现,实际上什么都不会发生。
using (MemoryStream myStream = new MemoryStream()) {
screenshot.Save(myStream, System.Drawing.Imaging.ImageFormat.Gif);
}