1

asp.netで画像のサイズ変更を試しています。実際のサイズ変更コードはさておき、なぜビットマップの保存オーバーロードに大きな違いがあるのか​​ 疑問に思っています

方法 1

   ImageCodecInfo jpgEncoder =
        ImageCodecInfo.GetImageDecoders()
        .First(c => c.FormatID == ImageFormat.Jpeg.Guid);
    Encoder encoder = Encoder.Quality;
    EncoderParameters encoderParameters = new EncoderParameters(1);
    encoderParameters.Param[0] = new EncoderParameter(encoder, (long)quality);
bitmap.Save(_current_context.Response.OutputStream,jpgEncoder,encoderParameters)

方法 2

bitmap.Save(_current_context.Response.OutputStream,ImageFormat.Jpeg)

したがって、方法 1 は、100 品質で、この特定の jpeg 画像を約 250kb で出力します。90 品質では、約 100kb に低下します。

ただし、方法 2 では、画像が約 60kb にドロップされます。これは大きな違いであり、目に見える違いもありません。

違いが非常に大きい理由はどこにも見つからないようです.MSDNには、これら2つのオーバーロードに関する詳細はありません.

どんな洞察も高く評価されます。ありがとう

4

1 に答える 1

0

設定を抽出する方法を提供していないように見える ImageCodeInfo / Encoder オブジェクトを見てください。デフォルトでは、保存時に品質を100に設定していると思います。

Windows Imaging について詳しく調べないと、なんとも言えません。

Default save (Method2) でコードを実行し、 Method 1 で 100 を実行して、それらが同じかどうかを確認できます。その通りである可能性が高いです。

http://msdn.microsoft.com/en-us/library/system.drawing.imaging.encoder.quality.aspx#Y800

于 2012-07-05T04:30:31.953 に答える