我有一个方法可以获取用户上传的文件,按比例缩放并裁剪为正方形。如果输入图像不是正方形,则缩放图像将从中心裁剪。在下面的代码中,保存的输出文件是所需的240x240像素,但是在裁剪之前图像没有被缩放,裁剪正在0,0坐标处进行而不是居中。请参阅下面的方法,删除缩放计算并替换为硬编码值以简化。
public static void ResizeAvatarImage(HttpPostedFileBase file)
{
Image sourceImage = Image.FromStream(file.InputStream);//input file size 660x960
//**************************************************
//Ommitting calculations here for scaling dimensions
//**************************************************
Bitmap bmPhoto = new Bitmap(240, 240);//desired output size
using (var newImage = Graphics.FromImage(bmPhoto))
{
newImage.DrawImage(sourceImage, new Rectangle(0, 0, 240, 349),//proportionally scaled image size
0, 54, 240, 240,//cropped image size with offset to center image in crop area
GraphicsUnit.Pixel);
}
bmPhoto.Save("C:\\test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}