Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “保存”不会将图像数据保存到文件中_C#_Image_Image Processing_Gdi+_System.drawing - Fatal编程技术网

C# “保存”不会将图像数据保存到文件中

C# “保存”不会将图像数据保存到文件中,c#,image,image-processing,gdi+,system.drawing,C#,Image,Image Processing,Gdi+,System.drawing,我有一个Windows窗体应用程序,可以从和网站获取jpeg图像,并将其显示在图像控件中。但是,当我尝试使用image.save函数将图像保存到文件系统时,它会创建文件,但将其保留为空。不知道我做错了什么 在下面的示例中,DownloadData()成功检索包含图像的字节数组 byte[] imageData = DownloadData(); MemoryStream stream = new MemoryStream(imageData); Image img = Image.FromSt

我有一个Windows窗体应用程序,可以从和网站获取jpeg图像,并将其显示在图像控件中。但是,当我尝试使用image.save函数将图像保存到文件系统时,它会创建文件,但将其保留为空。不知道我做错了什么

在下面的示例中,DownloadData()成功检索包含图像的字节数组

byte[] imageData = DownloadData(); 
MemoryStream stream = new MemoryStream(imageData);
Image img = Image.FromStream(stream);
stream.Close();
picMain.Image = img;
string fname = @"C:\Users\mikec1\Pictures\Construction\Construction_" + Now.ToString("yyyyMMdd") + "_" + Now.ToString("HHmmss") + ".jpg";
picMain.Image.Save(fname, System.Drawing.Imaging.ImageFormat.Jpeg);
如果从img对象执行Save,则会得到相同的结果


实际上,应用程序在执行最后一行时终止,显然没有抛出异常。

我尝试了你的代码,它抛出了一个
外部异常
,表示在GDI+中发生了一个一般错误,没有任何
内部异常
,也创建了一个空文件。省略这一行使图像在表单上显示得很好。更改.NET版本似乎没有任何影响

虽然我不确定为什么会发生这种情况,但是您可以通过使用

System.IO.File.WriteAllBytes(fname, imageData);
而不是

picMain.Image.Save(fname, System.Drawing.Imaging.ImageFormat.Jpeg);

因为
Image.Save
在保存之前必须首先处理图像格式,而且您已经有了字节数组。

您的问题是,使用
FromStream
实例化的
图像
要求流在
图像
的生命周期内保持打开状态。去掉
stream.Close()
,它应该就可以了。有关详细信息,请参阅。

如果省略文件保存代码,则图片是否通过
picMain.Image=img?是的,它至少能正确地做到这一点。很好的答案,与@SimonMcKenzie给出的答案一样好!我看你是立陶宛人!美好的我已故妻子的父母都出生在克莱佩达,很久以前它还是德国的一部分!当然,他们称之为Memel,但没关系。回答不错,Simon!工作起来很有魅力!