簡體   English   中英

將字節數組轉換為圖像引發“參數無效”。

[英]Converting Byte Array To Image Throws “Parameter is not valid.”

我正在嘗試將幾個字節數組(以varbinary(8000)的形式存儲在SQL Server 2008 R2中)轉換為圖像,以便將它們附加到PDF文件中(數據示例如下)。 我不斷收到“參數無效”。 從MemoryStream創建圖像時。 有什么幫助嗎?

MemoryStream memoryStream = new MemoryStream(byteArray);
Image image = Image.FromStream(memoryStream);
Bitmap bitmap = new Bitmap(image);

它是

% file output 
output: PCX ver. 2.8 image data, with palette

在Linux下,我只是將您的十六進制流從純文本轉換為稱為output的二進制文件

回聲“” | xxd -p -r>輸出

然后是帶有file output的簡單部分,以從實用程序file獲取文件格式的名稱。

首先,請確保您知道編碼,因為Image.FromStream方法僅知道有限數量的格式。

確保將MemoryStream的Position正確設置為0,而不是設置為末尾-否則,任何從末尾開始的讀取都將顯示為空,而不是從頭開始。

另外請注意

此構造函數不公開基礎流。 GetBuffer引發UnauthorizedAccessException。 1

因此,這可能是由Bitmap處理基礎流的某些方式引起的。 如果需要,請嘗試創建一個空的內存流,將字節復制到其中,然后重置位置

MemoryStream memoryStream = new MemoryStream();
foreach(var b in byteArray) memoryStream.WriteByte(b);
memoryStream.Position = 0;
Image image = Image.FromStream(memoryStream);

您提供的字節數組的長度為1117個字節。 不能被4或3整除,所以我可以確定圖像不是原始字節,實際上是以某種圖像格式編碼的。

Image.FromStream()方法無法在不知道格式的情況下解碼編碼的圖像,並且您提供的字節數組也沒有指定該格式是什么。 因此,您提供的參數無效。 如果您知道圖像的格式,則可以嘗試在圖像的其余部分之前將標頭插入字節數組,然后查看是否有幫助。 很好奇您有圖像但沒有標題,盡管它似乎也不是base-64字符串。

在不知道圖像格式的情況下,可能很難將這些字節數組轉換為圖像。 有什么辦法可以找出它們是什么? 如何檢索圖像數據進行存儲?

暫無
暫無

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

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