【发布时间】:2023-03-23 13:23:01
【问题描述】:
我正在使用 C#、MVC5 并且我正在从我的 Web 应用程序上传图像,但我意识到我有性能问题,因为我没有优化它们,我需要修复它,这对于保持质量很重要。 您可以在下面看到报告为什么慢的结果。
我该怎么做?
我正在使用以下代码将文件保存到本地路径中。
string imgpathvalue = ConfigurationManager.AppSettings["RestaurantPath"];
string path = System.IO.Path.Combine(Server.MapPath(imgpathvalue));
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string pic = System.IO.Path.GetFileName(restaurantImg.FileName.Replace(" ", "_").Replace("%", "_"));
path = System.IO.Path.Combine(Server.MapPath(imgpathvalue), pic);
// file is uploaded
restaurantImg.SaveAs(path);
我尝试了下面的代码,但收到错误“GDI+ 中发生一般错误。”
System.Drawing.Bitmap bmpPostedImage = new System.Drawing.Bitmap(restaurantImg.InputStream);
System.Drawing.Image objImage = ResizeImages.ScaleImage(bmpPostedImage, 81);
using (var ms = new MemoryStream())
{
objImage.Save(ms, objImage.RawFormat);
//ResizeImages.getImage(ms.ToArray());
}
public static System.Drawing.Image ScaleImage(System.Drawing.Image image, int maxHeight)
{
var ratio = (double)maxHeight / image.Height;
var newWidth = (int)(image.Width * ratio);
var newHeight = (int)(image.Height * ratio);
var newImage = new Bitmap(newWidth, newHeight);
using (var g = Graphics.FromImage(newImage))
{
g.DrawImage(image, 0, 0, newWidth, newHeight);
}
return newImage;
}
【问题讨论】:
-
您不应该在 ASP.NET 中使用
System.Drawing。改用 ImageMagick 之类的库。 -
ImageMagick 调整和优化图像?你能根据我的代码分享一些代码吗?
-
什么宽度和高度最好保持相同的质量而不是浆糊?
标签: c# image model-view-controller file-upload image-resizing