[英]Byte array to Image on IIS6
改寫這個問題:
我有大量的.tif文件,其中大多數(如果不是全部)具有以下定義:
有些是多頁的,有些則不是。
我使用以下命令加載了它們:
private byte[] LoadArchivedFile()
{
FileStream file = File.Open(fileAddress, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] fileByteArray = ReadFully(file, 0);
return fileByteArray;
}
然后,我將這些字節數組保存在SQL Server 12 DB的varbinary列中。
現在,我正在制作一個MVC2網頁來查看這些.tif文件。 然后,該過程應為:
Image
在開發環境中,一切都可以完美運行。 將項目安裝到目標IIS(當前為6,我已經打開7.5的請求)后,該過程在以下行失敗:
[... load byte array from DB]
byte[] imageBinary = (byte[])results.fileBinary;
using(MemoryStream ms = new MemoryStream(imageBinary))
{
Image image = Image.FromStream(ms); <---- FAILS HERE
[...]
}
堆棧跟蹤:
System.ArgumentException: Parameter is not valid.
at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
at System.Drawing.Image.FromStream(Stream stream)
at [MyCode]
現在,我收到的字節數組是不是錯誤的-它是從字面上 DB相同的數據。 我什至比較了幾個字節,總長度...無論如何,這是相同的來源。 這不是問題所在。
我發現了另一個類似(盡管不完全相同)問題的問題。 在那里,有關位深,像素格式,壓縮和編解碼器的問題。 我現在不確定原始圖像的像素格式是什么,盡管從字節數組轉換回Image后它是Format1bppIndexed。
我很茫然……目標計算機上缺少編解碼器是否出了問題? 在將圖像二進制文件上傳到數據庫之前,我需要做些什么嗎?
僅供參考-如果可能,切換到IIS7可以完全解決問題。
我仍然沒有在IIS6上弄清楚這個問題,並花了另一個完整的工作日對其進行研究……無濟於事。 我相信這與MIME類型處理有關,是IIS7中DLL的一些附加功能,也許是GDI + ...我真的不知道。 但是,如果還有其他人遇到此問題- 升級到IIS7並省去麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.