簡體   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