public static string Save(this IFormFile file)
{
var NewFileName = $"{Guid.NewGuid()}{Path.GetExtension(file.FileName)}";
var path = Path.Combine($"{Directory.GetCurrentDirectory()}\\wwwroot", "upload");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
//Resiser 调用缩放
//Save 压缩保存
Image.FromStream(file.OpenReadStream()).Resizer(1080).Save($"{path}\\{NewFileName}", 80);
return $"upload/{npath}/{NewFileName}";
}
/// <summary>
/// 按宽度缩放
/// </summary>
/// <param name="bmp"></param>
/// <param name="width"></param>
/// <returns></returns>
private static Image Resizer(this Image bmp, int width)
{
if (bmp.Width < width || width == 0) return bmp;
Bitmap ob = new Bitmap(width, bmp.Height * width / bmp.Width);
using (var g = Graphics.FromImage(ob))
{
g.Clear(Color.WhiteSmoke);
g.DrawImage(bmp, new Rectangle(0, 0, ob.Width, ob.Height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel);
}
return ob;
}
/// <summary>
/// path:路径;quality:质量;
/// </summary>
/// <param name="bmp"></param>
/// <param name="path">路径</param>
/// <param name="quality">质量</param>
public static void Save(this Image bmp,string path,int quality) {
EncoderParameters eps = new EncoderParameters();
eps.Param[0] = new EncoderParameter(Encoder.Quality, quality);
bmp.Save(path, ImageCodecInfo.GetImageEncoders().FirstOrDefault(x => x.FormatID == ImageFormat.Jpeg.Guid), eps);
}