2011-09-17 42 views
0

我在做JPG文件圖像上的Bitmap.Save(MemoryStream, ImageFormat.Gif),但是當檢查MemoryStream的MIME類型圖像保存到時,我仍然得到image/jpeg。從返回的圖像質量大大降低來看,我確信實際轉換正在發生,但同時我也確信MIME類型也正在被正確讀取。Bitmap.Save(Stream,ImageFormat)不會更改MIME類型

請問我的代碼有問題,或者這是正常的Bitmap.Save

+0

'MemoryStream'只是一個字節流 - 您指的是什麼MIME類型屬性? – BrokenGlass

回答

1

假設(由你前面的問題來看),這是ASP.NET/HTTP一般你必須設置內容類型頭設置您傳遞數據的MIME類型:

Response.ContentType = "image/gif"; 

一保存到.NET流的位圖只是一個字節流,並不保存MIME類型本身。

+0

我不想硬編碼,所以我通過interop調用讀取流/ byte []的MIME類型來設置ContentType。我保存的位圖實際上是通過FileStream從磁盤上的源映像初始化的,我認爲它存儲了它的MIME類型。我認爲發生的事情是相同的字節數組正在從方法傳遞到方法,並且存儲MIME類型(前256個字節)的byte []部分在轉換後不受影響。 – rafale

+0

@rafale:對我來說這聽起來像是過度工程 - 你已經調用了'Bitmap.Save()',你傳遞了'ImageFormat.Gif' - 你可以在這之前設置mime類型 - *你總是指定gif * – BrokenGlass

+0

是的,這就是我現在所做的。我沒有意識到MIME類型不一定是文件/字節[]的一部分,並且根據我轉換的格式手動設置它們會更容易。只是我的一個誤解。 – rafale