2010-01-21 23 views
0

我有要求在同一個ASPX頁面上顯示一個或多個TIFF文件。爲了增加複雜性,一些文件可以是多頁TIFF文件。 IE6-8,FF 3.X,需要Google Chrome支持。如何將多個TIFF文件添加到ASP.NET輸出流

我已經通過將文件轉換爲MemoryStream並通過BinaryWrite發送到Response來顯示任何一個圖像,但似乎無法找到支持多個文件/頁面的方式。什麼是完成這個最好的方法?

回答

0

每個請求總是針對單個「對象」,無論是頁面還是圖片或其他任何內容。要爲單個請求輸出多個圖像,我能想到的唯一方法是將圖像拼接成一個巨大的圖像並將其推出。

+0

我試圖做到這一點 - 我創建了多個MemoryStreams(每個文件一個),然後將它們全部讀回到使用BinaryWrite寫出的一個緩衝區中。只顯示第一個文件。 – 2010-01-21 16:34:30

+0

不,我的意思是基本上從各個圖像創建一個全新的圖像。這裏有一個教程應該給出基本的想法: http://www.switchonthecode。com/tutorials/combine-images-with-csharp 對於多頁面的TIFF,你將不得不做更多的工作,下面是一個關於該問題的線索http://stackoverflow.com/questions/1327821/edit-使用的系統的繪圖多頁-TIFF-圖像 – 2010-01-21 16:39:14

0

TIFF不是瀏覽器支持的格式,您需要在將圖像發送給瀏覽器之前將其轉換爲其他格式,例如JPEG。你也需要一次發送一個。將幾個img標籤放在你的aspx頁面中以獲取所有圖像。此外,您還需要創建一個用於翻頁多頁圖像的頁面,並將每頁作爲單獨的請求發送到服務器/從服務器發送。

0

不是花時間轉換成一個MemoryStream相反,儘量只使用Response.WriteFile()

此外,方式來顯示多個圖像在一個aspx,當然,通過簡單地把多個imgasp:Image標籤頁上,並讓瀏覽器句柄爲這些圖像提出新的請求。嘗試將而不是嘗試寫出多個圖像到相同的請求。這可能意味着您需要爲(或更好的,ashx HttpHandler)創建一個新的aspx來處理這些請求。

0

您將無法在一個響應中發回多張照片。雖然TIF確實支持同一圖像中的多個頁面,但聽起來並不像你想要的那樣。

你需要做的是建立一些類型的圖像處理程序(例如,myimage。ashx),並且只返回一個圖像。然後在調用頁面上有多個img標籤,鏈接到您需要的圖片ID的ashx。 ashx文件然後將單獨處理每個請求,但您的主aspx或html頁面將會顯示它們,但是是必需的。

0

我很驚訝沒有人說過這件事,它可能與你的情況無關,但你可以用JavaScript很容易地做到這一點。您將進行Ajax調用,然後從中返回所有圖像的數據。返回數據可以是每個圖像都帶有base64編碼數據的JSON數組。然後,頁面中的腳本需要遍歷JSON數組中的所有圖像,並將每個圖像插入到頁面的DOM中。

我不知道你是否熟悉JavaScript,如果你已經在做一些Ajax。如果沒有,也許這不是你的解決方案。但如果你對這些技術開放,那麼這是一個相當容易的任務。例如,使用JQuery,這將非常簡單。

相關問題