-1

画像を取得してサムネイルを生成する次のコードがあります。

品質または圧縮を変更して、プログラムでファイル サイズを小さくするにはどうすればよいですか?

Image thumbNail = image.GetThumbnailImage(Width, Height, null, new IntPtr());
4

3 に答える 3

2

生成されるサムネイルをより適切に制御する必要がある場合は、サイズが小さく品質の異なる画像を手動で生成して、独自のサムネイルを生成することをお勧めします。GetThumbnailImage では、あまり制御できません。

やり方はこちらの記事をご覧ください。 http://www.switchonthecode.com/tutorials/csharp-tutorial-image-editing-saving-cropping-and-resizing

于 2009-09-07T01:26:09.773 に答える
1

で保存するときは、thumbNailImage.Save渡すことで品質を指定できますEncoderParameter。参照: C# を使用して JPEG 画像の品質を下げる

EncoderParameter epQuality = new EncoderParameter(
    System.Drawing.Imaging.Encoder.Quality,
    (int)numQual.Value);

...
newImage.Save(..., iciJpegCodec, epParameters);
于 2009-09-07T01:25:37.960 に答える
1

GetThumbnailImage API を使用しない場合:

protected Stream ResizeImage(string source, int width, int height) {
            using (System.Drawing.Bitmap bmp = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile(source))
            using (System.Drawing.Bitmap newBmp = new System.Drawing.Bitmap(width, height)) 
            using (System.Drawing.Graphics graphic = System.Drawing.Graphics.FromImage(newBmp))
            {

                graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                graphic.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
                graphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

                graphic.DrawImage(bmp, 0, 0, width, height);

                MemoryStream ms = new MemoryStream();
                newBmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                return ms;

            }             
        }
于 2009-09-07T01:25:42.640 に答える