2011-09-17 10 views
0

JPGソースイメージでBitmap.Save(MemoryStream, ImageFormat.Gif)を実行していますが、イメージが保存されているMemoryStreamのMIMEタイプを確認すると、まだimage/jpegとなります。返される画像の品質が大幅に低下していると判断して、実際の変換が行われていることは確かですが、MIMEタイプも正しく読み取られていることを確認しています。Bitmap.Save(ストリーム、ImageFormat)はMIMEタイプを変更しません

私のコードに何か問題がありますか、これは通常Bitmap.Saveのですか?

+0

'MemoryStream'は単なるバイトストリームです - どのMIMEタイプのプロパティを参照していますか? – BrokenGlass

答えて

1

これはあなたが提供しているデータのMIMEタイプを設定するには、コンテンツタイプヘッダを設定する必要があり、一般的にASP.NET/HTTPです(以前の質問から判断する)と仮定:

Response.ContentType = "image/gif"; 

A .NETストリームに保存されるビットマップは単なるバイトストリームであり、それ自体でMIMEタイプを保持しません。

+0

ハードコードしたくないので、ストリーム/バイト[]のMIMEタイプをinterop呼び出しで読み取ってContentTypeを設定しています。私が保存しているビットマップは、ディスク上のソースイメージからFileStreamを通して実際に初期化されます。これは、そのMIMEタイプを格納していると思います。私は、同じバイト配列がメソッドからメソッドに持ち越され、MIMEタイプ(最初の256バイト)を格納するbyte []の部分は変換後も影響を受けないと考えています。 – rafale

+0

@rafale:これはオーバーエンジニアリングのように聞こえます。あなたは 'ImageFormat.Gif'を渡す' Bitmap.Save() 'を既に持っています - それ以前にMIMEタイプを設定することができます。 * – BrokenGlass

+0

ええ、それは私が今やっていることです。私は、MIMEタイプが必ずしもファイル/バイト[]の一部ではなく、私が変換しているフォーマットに基づいて手動で設定するほうが簡単であることを認識していませんでした。私のところでの誤解。 – rafale

関連する問題