繁体   English   中英

C#图像如何存储在MemoryStream中

[英]C# How image is stored in MemoryStream

我在一个项目中工作,我需要处理从套接字接收到的图像并进行显示。

我正在获取jpeg格式的图像,而我不能只使用Image.FromStream()); 检索图像的方法,因为它包含更多数据,并且出于效率原因,我想在读取数据时进行处理。(基本上,我想要的是手动从流中读取图像)。 是否有任何资料解释这些图像如何存储在MemoryStream

MemoryStream建立在byte []缓冲区上,我也重新使用相同的缓冲区,并且每次调用该方法时,我都不会创建新的MemoryStream。 代码示例:

    private byte[] BlockToJpeg()
    {       
        Bitmap block=new Bitmap("...");
        MemoryStream ms=new MemoryStream();
        block.Save(ms, ImageFormat.Jpeg);
        return ms.GetBuffer();
    }

所以通话看起来像这样

  byte[] buffer=BlockToJpeg();
  sck.Send(buffer);//sending the buffer...not the full code because this is not our problem.

现在在Reciver端,当我得到该缓冲区时:

Byte[] RecieveBuffer=sck.Recieve();//again,kind of pseudo code,because this is not the relevant part.

我必须处理它的像素,所以我宁愿手动从byte[] array逐一读取它们……是否有读取结构(在我们的情况下,读取存储为字节数组的jpeg图像)? 例如-前4个字节是宽度,第二个是高度...第3个是PixelFormat,其余的是像素值...或其他...?

谢谢。

jpeg是通常在图像上使用的一种压缩方法。 您可以在此处了解更多信息: http : //www.ams.org/samplings/feature-column/fcarc-image-compression

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM