簡體   English   中英

字節數組到IIS6上的圖像

[英]Byte array to Image on IIS6

改寫這個問題:

我有大量的.tif文件,其中大多數(如果不是全部)具有以下定義:

  • 位深:1
  • 壓縮:CCITT T.6(第4組)

有些是多頁的,有些則不是。

我使用以下命令加載了它們:

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
  • 在.tif中選擇一個頁面
  • 將該頁面轉換為Jpeg
  • 將頁面發送到瀏覽器

在開發環境中,一切都可以完美運行。 將項目安裝到目標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.

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