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

从c#中的byte 创建映像时参数无效错误分享

时间:2023-04-10 20:26:05 C#

C#学习教程:在C#中从字节创建图像时出现无效参数错误以下是代码:MemoryStreamms=newMemoryStream(b);位图bmp=新位图(毫秒);创建位图时显示错误参数无效。byte[]b来自网络流。但是当我将这个byte[]写入一个文件,并在任何图像查看器中打开这个文件时,它工作得很好。下面是将byte[]写入文件的代码:varfs=newBinaryWriter(newFileStream("tmp.bmp",FileMode.Create,FileAccess.Write));fs.Write(b);fs.Close();我在这里错过了什么?编辑这是导致问题的完整代码Sockets=listener.AcceptSocket();byte[]b=newbyte[imgLen];s.接收(b);MemoryStreamms=newMemoryStream(b);//现在我在这里使用ms.Seek(0,SeekOrigin.Begin);那解决了我的问题。位图bmp=新位图(毫秒);pictureBox1.Image=bmp;s.关闭();我在Form_Load事件上使用了这段代码,没有额外的。我只想显示在网络上流式传输的图像。服务器是用Java编写的,用于传输此图像。希望能解惑。感谢您尝试重置流MemoryStream中的当前位置ms=newMemoryStream(b);ms.Seek(0,SeekOrigin.Begin);位图bmp=新位图(毫秒);好的,只是为了澄清......问题是newBitmap(ms)将从流的当前位置读取数据-如果流当前位于数据的末尾,它将无法读取任何内容,因此出现问题.问题声称代码是这样的:MemoryStreamms=newMemoryStream(b);位图bmp=新位图(毫秒);在这种情况下,不需要重置流的位置,因为它已经是0。但是,我怀疑代码实际上更像这样:MemoryStreamms=newMemoryStream();//在这里复制数据到ms,例如从NetworkStreamBitmap读取bmp=newBitmap(ms);或者可能:MemoryStreamms=newMemoryStream(b);//其他从ms*读取*的代码,这将改变它的位置,//在我们最终调用构造函数之前:Bitmapbmp=newBitmap(ms);在这种情况下,您需要重置位置,否则流的“光标”位于数据的末尾而不是开头。但就个人而言,我更喜欢使用Position属性而不是Seek方法,只是为了简单起见,所以我使用:MemoryStreamms=newMemoryStream();//在这里将数据复制到ms中,例如从NetworkStream中读取//倒回准备读取的流ms.Position=0;位图bmp=新位图(毫秒);只是说明问题中的示例代码代表真实代码的重要性...试试这个:以上是C#学习教程:来自c#byteInvalidparametererrorwhencreatinganimage的所有内容分享,如果对大家有用并且需要了解更多C#学习教程,希望大家多多关注——byte[]b=...using(varms=newMemoryStream(b))using(varbmp=Image.FromStream(ms)){//dosomethingwiththebitmap}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: