当前位置: 首页 > 编程语言 > C#

Image.FromStream()方法返回InvalidArgumentexception分享

时间:2023-04-10 19:31:32 C#

Ima??ge.FromStream()方法返回InvalidArgumentexception客户端,相机是服务器)。问题是我在运行时得到一个System.InvalidArgumentexception。privateImagebyteArrayToImage(byte[]byteArray){if(byteArray!=null){MemoryStreamms=newMemoryStream(byteArray);返回Image.FromStream(ms,false,false);/*最后一个参数应该关闭图像数据验证*/}returnnull;我已经为这个问题搜索了很多论坛并尝试了专家给出的许多建议,但没有任何帮助。我不认为字节数组有什么问题,因为当我将相同的字节数组输入到我的VC++MFC客户端应用程序时,我得到了图像。但这在C#.NET中不起作用。谁能帮我?PS:我试图完成相同任务的其他方法是:1.privateImagebyteArrayToImage(byte[]byteArray){if(byteArray!=null){MemoryStreamms=newMemoryStream();ms.Write(byteArray,0,byteArray.Length);ms.Position=0;返回Image.FromStream(ms,false,false);}返回空值;}2。privateImagebyteArrayToImage(byte[]byteArray){if(byteArray!=null){TypeConvertertc=TypeDescriptor.GetConverter(typeof(Bitmap));位图b=(位图)tc.ConvertFrom(byteArray);返回b;}返回空值;}以上方法均无效。请帮忙。Image.FromStream()需要一个只包含一个图像的流!它将stream.Position重置为0。我有一个包含多个图像或其他内容的流,您必须将图像数据读入字节数组并初始化MemoryStream:Image.FromStream(newMemoryStream(myImageByteArray));只要图像在使用中,MemoryStream就必须保持打开状态。我也很难说。?也许图像嵌入在OLE字段中,您必须考虑88个字节的OLE标头和有效负载:byteBlobData=(Byte[])reader.GetValue(0);stream=newMemoryStream(byteBlobData,88,byteBlobData.Length-88);img=Image.FromStream(流);我猜从服务器接收文件时出现问题。也许您只是在尝试将文件转换为图像之前获取文件的一部分?您确定它与您提供给C++应用程序的字节数组完全相同吗?尝试将流保存到文件中,看看会得到什么。你也许能在那里发现一些线索。您还可以添加断点并手动比较字节数组中的某些字节与它们应该是什么(如果您知道的话)。编辑:看起来接收数据没有任何问题。问题在于它是原始格式(Image.FromStream无法理解)。可以在此处使用Bitmap(Int32,Int32,Int32,PixelFormat,IntPtr)构造函数。或者,您可以创建空白位图并从原始数据手动blt。这样做时我遇到了这个问题:MemoryStreamstream=newMemoryStream();screenshot.Save(stream,ImageFormat.Png);byte[]bytes=newbyte[stream.Length];stream.Save(bytes,0,steam.Length);最后两行是问题所在。我通过执行以下操作修复了它:MemoryStreamstream=newMemoryStream();screenshot.Save(stream,ImageFormat.Png);byte[]bytes=stream.ToArray();然后这有效:MemoryStreamstream=newMemoryStream(bytes);varnewImage=System.Drawing.Image.FromStream(流);stream.Dispose();System.InvalidArgument表示流没有有效的图像格式,即不支持的图像类型。试试这个:publicImagebyteArrayToImage(byte[]item){Imageimg=Image.FromStream(newMemoryStream(item));img.Save(Response.OutputStream,ImageFormat.Gif);返回图像;}希望能帮助到你!我过去遇到过同样的问题,这是由WindowsGDI库中的泄漏引起的,这正是“位图”所使用的。如果这种情况一直发生在你身上,它可能无关紧要。此代码正在运行stringquery="SELECT*fromgym_memberwhereRegistration_No='"+textBox9.Text+"'";command=newSqlCommand(query,con);ad=newSqlDataAdapter(命令);DataTabledt=newDataTable();ad.Fill(dt);textBox1.Text=dt.Rows[0][1].ToString();textBox2.Text=dt.Rows[0][2].ToString();byte[]img=(byte[])dt.Rows[0][18];MemoryStreamms=newMemoryStream(img);pictureBox1.Image=Image.FromStream(ms);ms.Dispose();尝试使用类似于此处描述的内容内容https://social.msdn.microsoft.com/Forums/vstudio/en-US/de9ee1c9-16d3-4422-a99f-e863041e4c1d/reading-raw-rgba-data-into-abitmap以上是C#学习教程:Image.FromStream()方法返回InvalidArgumentexception共享的所有内容。如果对你有用,需要了解更多C#学习教程,希望你多多关注——=新位图(宽度、高度、像素格式);varrect=newRectangle(0,0,宽度,高度);varbmpData=output.LockBits(rect,ImageLockMode.ReadWrite,输出.PixelFormat);//逐行复制vararrRowLength=width*Image.GetPixelFormatSize(output.PixelFormat)/8;varptr=bmpData.Scan0;for(vari=0;i代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载,请注明出处: