上传文件时调整图像大小-C#
本文关键字:-C# 图像 调整 文件 | 更新日期: 2023-09-27 18:20:12
我想在上传文件时调整图像大小(创建缩略图)。但它似乎没有正确读取路径,它正在崩溃。。。
代码:
if (FileUpload1.HasFile)
{
string imageFile = FileUpload1.FileName;
string path = "~/images/galeria/" + imageFile;
cmd.Parameters.Add("@IMAGE_URL", System.Data.SqlDbType.NVarChar).Value = path;
FileUpload1.SaveAs(Server.MapPath(path));
System.Drawing.Image image = System.Drawing.Image.FromFile(path);
float aspectRatio = (float)image.Size.Width / (float)image.Size.Height;
int newHeight = 200;
int newWidth = Convert.ToInt32(aspectRatio * newHeight);
System.Drawing.Bitmap thumbBitmap = new System.Drawing.Bitmap(newWidth, newHeight);
System.Drawing.Graphics thumbGraph = System.Drawing.Graphics.FromImage(thumbBitmap);
thumbGraph.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
thumbGraph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
thumbGraph.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
var imageRectangle = new Rectangle(0, 0, newWidth, newHeight);
thumbGraph.DrawImage(image, imageRectangle);
thumbBitmap.Save("~/images/galeria/thumb/" + FileUpload1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
thumbGraph.Dispose();
thumbBitmap.Dispose();
image.Dispose();
}
它将图像保存到目录中,但不会读取路径,因此aspectRatio无法获取其大小。有什么想法吗?
第1版:错误消息:System.Drawing.dll中发生类型为"System.IO.FileNotFoundException"的异常,但未在用户代码中处理
附加信息:此处为imagepath。
第2版:System.Drawing.dll中出现类型为"System.Runtime.InteropServices.ExternalException"的异常,但未在用户代码中处理。其他信息:GDI+中出现一般性错误。这一行导致错误:
thumbBitmap.Save("~/images/galeria/thumb/" + FileUpload1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
使用Server.MapPath(路径)读取路径。你用它来保存,但不是用来阅读。
if (FileUpload1.HasFile)
{
string imageFile = FileUpload1.FileName;
string path = Server.MapPath("~/images/galeria/" + imageFile);
FileUpload1.SaveAs(path);
System.Drawing.Image image = System.Drawing.Image.FromFile(path);
float aspectRatio = (float)image.Size.Width / (float)image.Size.Height;
int newHeight = 200;
int newWidth = Convert.ToInt32(aspectRatio * newHeight);
System.Drawing.Bitmap thumbBitmap = new System.Drawing.Bitmap(newWidth, newHeight);
System.Drawing.Graphics thumbGraph = System.Drawing.Graphics.FromImage(thumbBitmap);
thumbGraph.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
thumbGraph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
thumbGraph.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
var imageRectangle = new Rectangle(0, 0, newWidth, newHeight);
thumbGraph.DrawImage(image, imageRectangle);
thumbBitmap.Save(Server.MapPath("~/images/galeria/thumb/" + FileUpload1.FileName), System.Drawing.Imaging.ImageFormat.Jpeg);
thumbGraph.Dispose();
thumbBitmap.Dispose();
image.Dispose();
}