ASP.NET 核心图片上传和调整大小
ASP.NET Core Image Upload and Resize
如何获取上传图片 (IFormFile
) 的文件流并调整其大小?
public ActionResult Upload(IFormFile file)
{
using (var reader = new StreamReader(file.OpenReadStream()))
{
var fileContent = reader.ReadToEnd();
var parsedContentDisposition = ContentDispositionHeaderValue.Parse(file.ContentDisposition);
//scale image here?
}
}
您可以使用 IFormFile.OpenReadStream()
获取流,然后将流插入 Image
。对于这个例子,我将它缩放到 1024x768。
Image image = Image.FromStream(file.OpenReadStream(), true, true);
var newImage = new Bitmap(1024, 768);
using (var g = Graphics.FromImage(newImage))
{
g.DrawImage(image , 0, 0, 1024, 768);
}
然后您可以使用 newImage
来保存或做任何您想做的事情。
很有帮助。太感谢了。这方面让我免于内存不足exception.I想建功立业,如果你使用的是IFormFile接口,那么"file"在代码中引用你的IFormFile。
这是我的实体
的 IFormFile 属性
[NotMapped]
public IFormFile MyImage1 { set; get; }
这就是我的使用方式
Image image = Image.FromStream(model.MyImage1.OpenReadStream(), true, true);
从 nuget 安装:
安装包 SixLabors.ImageSharp
[HttpPost]
public IActionResult Upload(IFormFile file)
{
//Better use extension method
string fileName;
string customRoot = "wwwroot\Upload\";
if (!Directory.Exists(customRoot))
{
Directory.CreateDirectory(customRoot);
}
var path = Path.Combine(Directory.GetCurrentDirectory(), customRoot,fileName);
using var image = Image.Load(file.OpenReadStream());
//100: height
//100: width
image.Mutate(x => x.Resize(100, 100));
image.Save(path);
return Ok();
}
了解更多信息:
https://blog.elmah.io/upload-and-resize-an-image-with-asp-net-core-and-imagesharp/
如何获取上传图片 (IFormFile
) 的文件流并调整其大小?
public ActionResult Upload(IFormFile file)
{
using (var reader = new StreamReader(file.OpenReadStream()))
{
var fileContent = reader.ReadToEnd();
var parsedContentDisposition = ContentDispositionHeaderValue.Parse(file.ContentDisposition);
//scale image here?
}
}
您可以使用 IFormFile.OpenReadStream()
获取流,然后将流插入 Image
。对于这个例子,我将它缩放到 1024x768。
Image image = Image.FromStream(file.OpenReadStream(), true, true);
var newImage = new Bitmap(1024, 768);
using (var g = Graphics.FromImage(newImage))
{
g.DrawImage(image , 0, 0, 1024, 768);
}
然后您可以使用 newImage
来保存或做任何您想做的事情。
很有帮助。太感谢了。这方面让我免于内存不足exception.I想建功立业,如果你使用的是IFormFile接口,那么"file"在代码中引用你的IFormFile。
这是我的实体
的 IFormFile 属性[NotMapped]
public IFormFile MyImage1 { set; get; }
这就是我的使用方式
Image image = Image.FromStream(model.MyImage1.OpenReadStream(), true, true);
从 nuget 安装: 安装包 SixLabors.ImageSharp
[HttpPost]
public IActionResult Upload(IFormFile file)
{
//Better use extension method
string fileName;
string customRoot = "wwwroot\Upload\";
if (!Directory.Exists(customRoot))
{
Directory.CreateDirectory(customRoot);
}
var path = Path.Combine(Directory.GetCurrentDirectory(), customRoot,fileName);
using var image = Image.Load(file.OpenReadStream());
//100: height
//100: width
image.Mutate(x => x.Resize(100, 100));
image.Save(path);
return Ok();
}
了解更多信息: https://blog.elmah.io/upload-and-resize-an-image-with-asp-net-core-and-imagesharp/