簡體   English   中英

保存到圖像的字節數組會在C#中引發類似“參數無效”的錯誤

[英]byte array to image save throws an error like “Parameter not valid” in C#

我可以看到這個問題被問過很多次,但似乎沒有一個簡單的答案。 所以在發布這個問題。

我正在從Oracle數據庫中將 BLOB讀取到photoByteArray []數組中。 現在,我只想將此byte []作為anyFileName.jpeg (或任何格式)保存到文件系統中,但出現“ Parameter not vaid ”參數異常。

我試過的是

using (var ms = new System.IO.MemoryStream(photoByteArray))
{
  using (var img = Image.FromStream(ms)) // error thrown here as 'parameter is not valid'
    {
      img.Save("D:\\anyFileName.jpg", ImageFormat.Jpeg); 
     }
 }

我的字節

字節圖像

很少有人建議在字節數組中添加一些標頭,但是如何以及多少去除這種標頭並不是直接的方法。

我究竟做錯了什么 ?

當我使用這樣的東西:

Image img = Image.FromFile(@"C:\a.png");
            byte[] arr;
            using (MemoryStream ms = new MemoryStream())
            {
                img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                arr = ms.ToArray();
            }
            using (var ms = new System.IO.MemoryStream(arr))
            {
                using (var img1 = Image.FromStream(ms,false,true)) // error thrown here as 'parameter is not valid'
                {
                    img1.Save("D:\\anyFileName.png", ImageFormat.Png);
                }
            }

它將圖像文件轉換為字節,並使用您的方法將該字節數組轉換為圖像,它可以正常工作。

但是當我將該byteArray的某個字節更改為0(零)(例如前15個字節)時,我得到了您的錯誤。

因此可以得出結論,您的字節數組確實格式不正確,其中一些概率是:

  1. 您正在將字節數組錯誤保存到數據庫中
    列的示例數據類型不合適)。
  2. 從數據庫獲取字節數組時,您會犯一些錯誤。
  3. 我不知道的其他一些原因。

暫無
暫無

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

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