2013-08-07 53 views
0

我试图通过下降了10倍的图像重新调整,并保存重新缩放图像

System.Drawing.Bitmap bmi  
var scaleWidth = (int)(bmi.Width * 0.1); 
var scaleHeight = (int)(bmi.Height * 0.1); 
Rectangle f = new Rectangle(0, 0, scaleWidth, scaleHeight); 
Graphics graph = Graphics.FromImage(bmi);   
graph.DrawImage(bmi, new Rectangle(
    ((int)scaleWidth - scaleWidth)/2, 
    ((int)scaleHeight - scaleHeight)/2, 
    scaleWidth, scaleHeight)); 
string a = "a.jpg"; 
bmi.Save(a); 

,但是当我这样做可以节省缩放后的图像,在原始图像上绘制的,而且我不确定如何更正此问题

回答

0

您应该将原始位图复制到新的位图,并按比例缩放。示例(未经测试):

Bitmap bmpOriginal = /* load your file here */ 
var scaleWidth = (int)(bmi.Width * 0.1); 
var scaleHeight = (int)(bmi.Height * 0.1); 
Bitmap bmpScaled = new Bitmap(scaleWidth, scaleHeight); 
Graphics graph = Graphics.FromImage(bmpScaled);   
graph.DrawImage(bmpOriginal, new Rectangle(0, 0, scaleWidth, scaleHeight); 
bmpScaled.Save("scaledImage.bmp"); 

编辑:我只注意到在Bitmap类,它允许您简化代码这个this constructor

Bitmap bmpOriginal = /* load your file here */ 
var scaleWidth = (int)(bmi.Width * 0.1); 
var scaleHeight = (int)(bmi.Height * 0.1); 
Bitmap bmpScaled = new Bitmap(bmpOriginal, new Size(scaleWidth, scaleHeight)); 
bmpScaled.Save("scaledImage.bmp");