file是我的資料來源,裡面存放很多檔案,並有兩個欄位,分別為file_stream
(檔案byte[]
)與name
(檔案名稱),若要呈現圖檔jpg
;jpeg
;png
;gif
;就是將file_stream
轉base64
,再串成img
tag所需的src
,目前可以如期呈現,但在實作tif
或tiff
未成功,想詢問可以怎麼實做呢?
var fileStream=file[i].file_stream;
var filePath="data:image/png;base64,"+ Convert.ToBase64String(fileStream);
var fileExtension = Path.GetExtension(file[i].name);
if(fileExtension==".jpg" || fileExtension==".jpeg" || fileExtension==".png" ||fileExtension==".gif") {
<img src="@(filePath)" style='text-align:center' />
<br />
}
else if(fileExtension==".tif" || fileExtension==".tiff"){
//不work
<img src="@(filePath)" style='text-align:center' />
<br />
}
建議您在讀取圖片之前先做轉檔的動作,
現在的瀏覽器大多都不直接支援tiff
格式了。
參考: Image format support
目前網路上看到的方法,好像都要在上傳檔案的時候,進行轉檔(tiff轉png或jpg),但因為到時候下載下來,會希望是原始的檔案,也是想往您說的讀取圖片前先做轉檔的動作,不過目前還沒找到實作方法,謝謝您~
var memoryStream = new System.IO.MemoryStream();
using (var image = System.Drawing.Image.FromFile("myfile.tif"))
image.Save(memoryStream, ImageFormat.Png);
return File(memoryStream, "image/png");
給你參考
這個看起來配合 canvas 可以直接在前端顯示 tiff 檔案
Quramy/decode-tiff
我是還沒測試過,假設可以的話,還是很麻煩
仍然覺得顯示的是 png 或是 jpg的縮圖,然後下載時才真的下載原檔案會比較簡單
昨天有找到這個方法,但目前還在嘗試中,您們說的方法我也來嘗試看看,謝謝三位的幫忙~