簡體   English   中英

從 .NET 中的 MS Access 數據庫讀取 OLE 圖像時出現 ArgumentException

[英]ArgumentException on reading an OLE image from an MS Access database in .NET

我正在嘗試從 Access 數據庫中讀取圖像。 它讀取字節,但當我嘗試使用Image.FromStream時,它給出了一個未處理的 System.ArgumentException 。

這是我的代碼:

 private Image ReadImageFromDB()
    {
        Image fetchedImg;
        if (rownumber >= 0)
        {
            byte[] fetchedimgbytes = (byte[])localDataTable.Rows[5]["Object"];
            MemoryStream stream = new MemoryStream(fetchedimgbytes);
           fetchedImg= Image.FromStream(stream);
            return fetchedImg;
        }
        else
        {
            MessageBox.Show("no image");
            return null;
        }
    }

我下載了您的示例文件,當我在 Access 中打開表格時,[Img] 列中的項目顯示“位圖圖像”,而不是“長二進制數據”。

位圖圖像.png

因此,該行中的 [Img] 項是“OLE 包裝”對象,而不是原始位圖圖像。 如果您提取該列的二進制內容(就像您從 C# 應用程序中所做的那樣),它將包括原始二進制圖像數據周圍的 OLE 包裝器,並且不會是該形式的有效位圖圖像。

您需要從二進制數據中刪除 OLE 標頭信息,然后才能將其識別為有效圖像。 有關如何執行此操作的信息,請參閱此問題:

在 C# 中將 Access 圖像 OLE 對象轉換為原始圖像字節數組

暫無
暫無

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

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