【问题标题】:ASP.net c# Resize Image SQL UploadASP.net c# Resize Image SQL 上传
【发布时间】:2011-03-14 23:57:30
【问题描述】:
我一直在寻找一种在图像上传到我的数据库之前调整图像大小的方法。现在文件刚刚上传,如果它们的大小不正确,那么我的页面看起来就像一团糟。在将图像上传到数据库之前如何调整图像大小,我想上传原始大小的图像和正确的大小。这可能与 ASP.net。我看过一些关于图像调整大小的教程,但没有一个有帮助,如果有人能提供帮助,那就太好了。我开始查看 this 教程,但无法在我的 SQL 上传中实现它。
谢谢
【问题讨论】:
-
-
使用imageresizing.net 库以获得最佳图像质量和正确的内存管理。使用 (MemoryStream ms = new MemoryStream()){ ImageBuilder.Current.Build(postedFile, ms, new ResizeSettings("maxwidth=800&maxheight=600&format=jpg"); return ms.ToArray();}
标签:
c#
asp.net
sql
image-uploading
【解决方案1】:
类似这样,我使用的是 MVC,因此是 HttpPostedFileBase。然而,这是采用file 输入类型的输入并返回一个字节数组,非常适合上传到数据库。
using System.Drawing;
using System.Drawing.Drawing2D;
private static byte[] PrepImageForUpload(HttpPostedFileBase FileData)
{
using (Bitmap origImage = new Bitmap(FileData.InputStream))
{
int maxWidth = 165;
int newWidth = origImage.Width;
int newHeight = origImage.Height;
if (origImage.Width < newWidth) //Force to max width
{
newWidth = maxWidth;
newHeight = origImage.Height * maxWidth / origImage.Width;
}
using (Bitmap newImage = new Bitmap(newWidth, newHeight))
{
using (Graphics gr = Graphics.FromImage(newImage))
{
gr.SmoothingMode = SmoothingMode.AntiAlias;
gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
gr.DrawImage(origImage, new Rectangle(0, 0, newWidth, newHeight));
MemoryStream ms = new MemoryStream();
newImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
}
}
}
}