簡體   English   中英

將字節轉換為圖像jpg

[英]Convert Byte to Image jpg

我將byte []轉換為.jpg文件時遇到問題。 當我嘗試轉換字節時,此方法出現異常:

using (MemoryStream ms = new MemoryStream(bytes, 0, bytes.Length))
{
   ms.Write(bytes, 0, bytes.Length);
   Image image = Image.FromStream(ms, true, false);
}

例外:

該參數在System.Drawing.Image.FromStream中無效(流流,布爾值useEmbeddedColorManagement,布爾值validateImageData)

有什么建議嗎?

解決方案* :刪除以下行: ms.Write(bytes, 0, bytes.Length);

*如果這不起作用,則bytes數組不包含有效的圖像數據。


原因:

該行使用字節數組中的字節初始化MemoryStream 它將在位置0(開始)處開始流:

using (MemoryStream ms = new MemoryStream(bytes, 0, bytes.Length))

在您的情況下,可以簡化為:

using (MemoryStream ms = new MemoryStream(bytes))

然后,此行將相同的字節寫入流中。 它將使您的流保留在位置bytes.Length (末尾):

ms.Write(bytes, 0, bytes.Length);

該行將嘗試從當前位置(末尾)開始讀取流中的圖像。 由於0個字節不會構成圖像,因此它會給您以下異常:

Image image = Image.FromStream(ms, true, false);

如Jimi所述,將其包裝成一個方法可能會更好:

public static Image ImageFromByteArray(byte[] bytes)
{
    using (MemoryStream ms = new MemoryStream(bytes))
    using (Image image = Image.FromStream(ms, true, true))
    {
        return (Image)image.Clone();
    }
}

使用Clone()的原因是,如果原始流已被丟棄,則可能導致保存圖像時遇到麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM