1

次のルーティングを使用して、C#/GDI+ で画像のサイズを変更しています

        bmpOut = new Bitmap(lnNewWidth, lnNewHeight);
        Graphics g = Graphics.FromImage(bmpOut);
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;
        g.FillRectangle(Brushes.White, 0, 0, lnNewWidth, lnNewHeight);
        g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight);

最高品質でエンコードします。

System.Drawing.Imaging.Encoder qualityEncoder = System.Drawing.Imaging.Encoder.Quality;
            EncoderParameter myEncoderParameter = new EncoderParameter(qualityEncoder, 100L);

ただし、取得した画像の色が大幅に失われています (JPG 画像のみを使用しています)。品質は完璧ですが、色が洗い流されています。何が起こっているのか分かりますか?

よろしくお願いします。

4

1 に答える 1

1

.NET / GDI+ でサブサンプリングを無効にする方法を参照してください。

問題は、GDI+ の jpeg エンコーダーではクロマ サブサンプリングを無効にできないため、色情報が半分の解像度で保存されることです。唯一の回避策は、上記の回答として提案された ImageMagick などの別のエンコーダーを使用することです。

于 2009-06-24T03:38:04.163 に答える