c#ピクチャをスケール

3749 ワード

public   static   Bitmap GetThumbnail(Bitmap b, int   destHeight, int   destWidth)            {                        System.Drawing.Image imgSource = b;                   System.Drawing.Imaging.ImageFormat thisFormat = imgSource.RawFormat;               int   sW = 0, sH = 0;                       //                         int   sWidth = imgSource.Width;              int   sHeight = imgSource.Height;              if   (sHeight > destHeight || sWidth > destWidth)              {                                if   ((sWidth * destHeight) > (sHeight * destWidth))                     {                                      sW = destWidth;                         sH = (destWidth * sHeight) / sWidth;                   }                                else                              {                                sH = destHeight;                         sW = (sWidth * destHeight) / sHeight;                     }                        }                        else                       {                           sW = sWidth;                   sH = sHeight;               }                 Bitmap outBmp = new   Bitmap(destWidth, destHeight);               Graphics g = Graphics.FromImage(outBmp);                   g.Clear(Color.Transparent);                      //                       g.CompositingQuality = CompositingQuality.HighQuality;              g.SmoothingMode = SmoothingMode.HighQuality;                    g.InterpolationMode = InterpolationMode.HighQualityBicubic;                 g.DrawImage(imgSource, new   Rectangle((destWidth - sW) / 2, (destHeight - sH) / 2, sW, sH), 0, 0, imgSource.Width, imgSource.Height, GraphicsUnit.Pixel);                  g.Dispose();                   // ,                   EncoderParameters encoderParams = new   EncoderParameters();               long [] quality = new   long [1];                   quality[0] = 100;                   EncoderParameter encoderParam = new   EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);                encoderParams.Param[0] = encoderParam;                imgSource.Dispose();                      return   outBmp;               }