将右边的BytesArray传递给MemoryStream for Image

时间:2010-07-09 09:35:28

标签: c# image bytearray memorystream system.drawing.imaging

如果我想用字节数组创建一个Image,有一种方法可以确定我正在将正确的字节数组传递给MemoryStream。

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

如果可能的话,我怎么能纠正 byteArray它是一个有效的ImageArray图像?

4 个答案:

答案 0 :(得分:0)

这是一个非常不祥的问题,当然你必须知道从哪里读取数据?使用Image.FromStream创建图像时,如果无法识别格式,则会引发ArgumentException。为什么不使用该机制来识别不正确的数据流,而不是重新发明轮子?

答案 1 :(得分:0)

我自己做了一些程序化的图像处理。你要做的就是找到你正在修改的图像格式的规范,并确保你应该做的每一件事。例如png文件被分块并且每个部分都有校验和,所以如果你改变那个块中的东西,你必须重新计算该部分末尾的校验和。

答案 2 :(得分:0)

在阅读完您的问题和评论之后,我认为您正在尝试的是在将字节数组放入Image类之前通过操作字节数组来操作图像。现在您声称您的字节数组已损坏此图像格式以及如何纠正它。

所以这个问题的答案就是:你破坏了它,你会解决它。

但要真正解决您的问题,如果您的目标是操纵图片本身,只需将其加载到句点Image并使用Graphics类来操纵您的图片。然后将结果放入您喜欢的真实图像对象中。准备好了,没有任何关于字节数组工作的麻烦。

答案 3 :(得分:0)

这是答案Image Processing for Dummies with C# and GDI+

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