Asp.Net C#ピクチャスケーリング等のスケール拡大縮小透明背景


        public byte[] ZoomPicture(Image SourceImage, int TargetWidth, int TargetHeight)
        {
            int IntWidth; //     
            int IntHeight; //     
            try
            {
                //System.Drawing.Imaging.ImageFormat format = SourceImage.RawFormat;    //    
                System.Drawing.Bitmap SaveImage = new System.Drawing.Bitmap(TargetWidth, TargetHeight, PixelFormat.Format32bppArgb);
                Graphics g = Graphics.FromImage(SaveImage);
                // g.Clear(Color.Transparent);
                g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; //    

                //          
                if (SourceImage.Width > TargetWidth && SourceImage.Height <= TargetHeight)//          ,          
                {
                    IntWidth = TargetWidth;
                    IntHeight = (IntWidth * SourceImage.Height) / SourceImage.Width;
                }
                else if (SourceImage.Width <= TargetWidth && SourceImage.Height > TargetHeight)//          ,          
                {
                    IntHeight = TargetHeight;
                    IntWidth = (IntHeight * SourceImage.Width) / SourceImage.Height;
                }
                else if (SourceImage.Width <= TargetWidth && SourceImage.Height <= TargetHeight) //           
                {
                    IntHeight = SourceImage.Width;
                    IntWidth = SourceImage.Height;
                }
                else//            
                {
                    IntWidth = TargetWidth;
                    IntHeight = (IntWidth * SourceImage.Height) / SourceImage.Width;
                    if (IntHeight > TargetHeight)//    
                    {
                        IntHeight = TargetHeight;
                        IntWidth = (IntHeight * SourceImage.Width) / SourceImage.Height;
                    }
                }
                //    
                g.DrawImage(SourceImage, (TargetWidth - IntWidth) / 2, (TargetHeight - IntHeight) / 2, IntWidth, IntHeight);

                using(MemoryStream stream = new MemoryStream())
                {
                    SaveImage.Save(stream, ImageFormat.Png);
                    //    
                    SaveImage.Dispose();
                    SourceImage.Dispose();
                    g.Dispose();
                    return stream.ToArray();
                }
            }
            catch (Exception ex)
            {
                HxSoft.Common.Config.Err(ex);
            }
            return null;
        }

ここでは画像をキャッシュする必要があるので、byte[]を戻り値として使用し、画像を格納するなどしたらImageタイプ(fun内のSaveImageオブジェクト)に直接戻ることができます.
ここでは高品質の効果を使用していますが、シーンが小さい画像を使用すると、より高いパフォーマンスと引き換えに画質を低下させることができます.