Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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# 将右字节数组传递到MemoryStream以获取图像_C#_Image_Bytearray_Memorystream_System.drawing.imaging - Fatal编程技术网

C# 将右字节数组传递到MemoryStream以获取图像

C# 将右字节数组传递到MemoryStream以获取图像,c#,image,bytearray,memorystream,system.drawing.imaging,C#,Image,Bytearray,Memorystream,System.drawing.imaging,如果要从字节数组中创建映像,有一种方法可以确定我正在将右字节数组传递给MemoryStream MemoryStream mStream = new MemoryStream(); mStream.Write(byteArray, 0, byteArray.Lenth); Image imgObj = Image.FromStream(mStream); 如果可能的话,我如何更正byteArray,使其成为图像的有效byteArray?这是一个非常不祥的问题,您肯定知道您从何处读取数据?使用i

如果要从字节数组中创建映像,有一种方法可以确定我正在将右字节数组传递给MemoryStream

MemoryStream mStream = new MemoryStream();
mStream.Write(byteArray, 0, byteArray.Lenth);
Image imgObj = Image.FromStream(mStream);

如果可能的话,我如何更正byteArray,使其成为图像的有效byteArray?

这是一个非常不祥的问题,您肯定知道您从何处读取数据?使用image.FromStream创建图像时,如果ArgumentException无法识别格式,则会引发ArgumentException。你为什么不使用这种机制来识别错误的数据流,而不是重新发明轮子呢?

我自己也做过一些编程图像处理。你要做的事情是找到你正在修改的图像格式的规范,并确保你做了所有你应该做的事情。例如,png文件是分块的,每个部分都有校验和,因此,如果您在该块中更改了某些内容,则必须在该部分末尾重新计算校验和。

阅读您的问题和评论后,我认为您尝试的是在将字节数组放入image类之前通过操作字节数组来操作映像。现在,您声称您的字节数组对于这种图像格式已经损坏,并且您可以如何更正它

所以这个问题的答案是:你破坏了它,你会修复它

但要真正解决您的问题,如果您的目标是操纵图片本身,只需将其加载到interims图像中,并使用该类操纵图片即可。然后将结果放入您喜欢的真实图像对象中。准备好了,不用为处理字节数组而烦恼。

以下是答案

MemoryStream mStream = new MemoryStream();
mStream.Write(byteArray, 0, byteArray.Lenth);
Image imgObj = Image.FromStream(mStream);

OT:我不知道如何在评论上添加链接,所以我把它放在了答案中

是的,我知道我从哪里读取数据,但我试图对从中生成的字节进行添加和获取操作,因此我得到ArgumentException,但是否可以更正byteArray?老实说,如果不了解字节数组是如何损坏的,我看不出如何修复它。这当然会因格式而异。您需要某种框架/应用程序来分析字节数组本身,我认为这不是一件容易完成的事情……我找到了解决方案。我读过这篇文章,关于C和GDI+假人的图像处理,它使用GDI+通过指针直接操作字节。谢谢你的提示,奥利维拉的评论与普通问题的语法相同。但是,你不必使用基本链接,而必须从网站上获取高级链接版本。所以只要写下[图像处理…]http://...