1

写真家のポートフォリオサイトを作っています。

写真のサイズを大きいものから小さいものに変更するという問題に直面しています。サイズを小さくすると、品質の多くが失われます。画質を落とさないように画像を圧縮するにはどうすればよいですか?

私のコード:

using (var input = new Bitmap(imageFile.InputStream))
            {
                int width;
                int height;
                if (input.Width > input.Height)
                {
                    width = 411 * input.Width / input.Height;
                    height = 411;
                }
                else
                {
                    height = 411;
                    width = 411 * input.Width / input.Height;
                }

                using (var thumb = new Bitmap(width, height))
                using (var graphic = Graphics.FromImage(thumb))
                {
                    graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    graphic.SmoothingMode = SmoothingMode.AntiAlias;
                    graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;

                    graphic.DrawImage(input, 0, 0, width, height);
                    using (var output = System.IO.File.Create(imagePath))
                    {
                        thumb.Save(output, ImageFormat.Jpeg);
                    }
                }
            }
4

1 に答える 1

2

段階的なサイズ変更 (各ステップで 10 ~ 25% など) を行うと、より良い結果が得られる場合があります。無損失形式 (ImageFormat.Png など) での保存も試してください。

品質が非常に重要な場合は、適切な写真編集ツールで手動で変換するのがおそらく正しい方法です。

于 2012-06-22T17:04:27.807 に答える