C#图片按比例缩放
C#图片按比例缩放:
1 // 按比例缩放图片 2 public Image ZoomPicture(Image SourceImage, int TargetWidth, int TargetHeight) 3 { 4 int IntWidth; //新的图片宽 5 int IntHeight; //新的图片高 6 try 7 { 8 System.Drawing.Imaging.ImageFormat format = SourceImage.RawFormat; 9 System.Drawing.Bitmap SaveImage = new System.Drawing.Bitmap(TargetWidth, TargetHeight); 10 Graphics g = Graphics.FromImage(SaveImage); 11 g.Clear(Color.White); 12 13 //计算缩放图片的大小 http://www.cnblogs.com/roucheng/ 14 15 if (SourceImage.Width > TargetWidth && SourceImage.Height <= TargetHeight)//宽度比目的图片宽度大,长度比目的图片长度小 16 { 17 IntWidth = TargetWidth; 18 IntHeight = (IntWidth * SourceImage.Height) / SourceImage.Width; 19 } 20 else if (SourceImage.Width <= TargetWidth && SourceImage.Height > TargetHeight)//宽度比目的图片宽度小,长度比目的图片长度大 21 { 22 IntHeight = TargetHeight; 23 IntWidth = (IntHeight * SourceImage.Width) / SourceImage.Height; 24 } 25 else if (SourceImage.Width <= TargetWidth && SourceImage.Height <= TargetHeight) //长宽比目的图片长宽都小 26 { 27 IntHeight = SourceImage.Width; 28 IntWidth = SourceImage.Height; 29 } 30 else//长宽比目的图片的长宽都大 31 { 32 IntWidth = TargetWidth; 33 IntHeight = (IntWidth * SourceImage.Height) / SourceImage.Width; 34 if (IntHeight > TargetHeight)//重新计算 35 { 36 IntHeight = TargetHeight; 37 IntWidth = (IntHeight * SourceImage.Width) / SourceImage.Height; 38 } 39 } 40 41 g.DrawImage(SourceImage, (TargetWidth - IntWidth) / 2, (TargetHeight - IntHeight) / 2, IntWidth, IntHeight); 42 SourceImage.Dispose(); 43 44 return SaveImage; 45 } 46 catch (Exception ex) 47 { 48 49 } 50 51 return null; 52 }