[英]How to convert jpg byte array to image and display in picturebox?
[英]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.