在ASP.NET中生成图像缩略图?
发布时间:2020-05-24 00:47:37 所属栏目:asp.Net 来源:互联网
导读:在.NET中生成缩略图的最快和更可靠的方法是什么?我需要获取任何图像,压缩JPEG并调整大小. 我看过几个GDI的例子,一些非免费的组件,我记得WPF有一些关于成像的好东西. GDI很旧,WPF的东西可能在服务器环境中没有任何好处. 这必须在一个完全信任的ASP.NET MVC应
|
在.NET中生成缩略图的最快和更可靠的方法是什么?我需要获取任何图像,压缩JPEG并调整大小. 我看过几个GDI的例子,一些非免费的组件,我记得WPF有一些关于成像的好东西. GDI很旧,WPF的东西可能在服务器环境中没有任何好处. 这必须在一个完全信任的ASP.NET MVC应用程序中运行,如果可能,同步运行. 你会推荐什么 更新: 基于Mantorok’s answer我已经制定了这个例子,但它仍然是GDI,如果我尝试一个大图像,它会崩溃: public void GenerateThumbnail(String filename,Int32? desiredWidth,Int32? desiredHeight,Int64 quality,Stream s)
{
using (Image image = Image.FromFile(filename))
{
Int32 width=0,height=0;
if ((!desiredHeight.HasValue && !desiredWidth.HasValue) ||
(desiredHeight.HasValue && desiredWidth.HasValue))
throw new ArgumentException(
"You have to specify a desired width OR a desired height");
if (desiredHeight.HasValue)
{
width = (desiredHeight.Value * image.Width) / image.Height;
height = desiredHeight.Value;
}
else
{
height = (desiredWidth.Value * image.Height) / image.Width;
width = desiredWidth.Value;
}
using (var newImage = new Bitmap(width,height))
using (var graphics = Graphics.FromImage(newImage))
using (EncoderParameter qualityParam =
new EncoderParameter(System.Drawing.Imaging.Encoder.Quality,quality))
using (EncoderParameters encoderParams = new EncoderParameters(1))
{
graphics.DrawImage(image,width,height);
ImageCodecInfo jpegCodec = ImageCodecInfo.GetImageEncoders().
Single(e => e.MimeType.Equals("image/jpeg",StringComparison.Ordinal));
encoderParams.Param[0] = qualityParam;
newImage.Save(s,jpegCodec,encoderParams);
}
}
}
解决方法对于密集的服务器端代码,我建议您使用除GDI之外的其他技术,GDI尚未设计为通过块(以流式传输方式)处理图像块.您可以使用Windows Imaging Component 或WPF进行此任务.这里有一个非常好的例子,说明如何快速,更重要 – 可扩展的方式来做到这一点: The fastest way to resize images from ASP.NET. And it’s (more) supported-ish. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – IIS Web服务器中的此错误(扩展配置)是什么?
- asp.net-mvc – 为现有的基于MVC的网站创建REST API
- asp.net-mvc – MVC 4 ModelBinder
- asp.net – IIS 7.5无法打开处理程序映射?
- asp.net * WebForms *开发人员将来可以期待什么?
- 在asp.net c#应用程序中使用Graphviz Dll
- asp.net – 自我跟踪实体vs POCO实体
- asp.net – 在web.config或数据库中存储配置设置
- asp.net-mvc – 是否有一种方法来创建一个ActionLink与HTML
- 在剃刀mvc 4 rc清空第一行
推荐文章
站长推荐
- asp.net – 如何制作可配置的DisplayFormat属性
- asp.net – 使用NuGet发布可执行文件和网站
- 如何在ASP.NET MVC中获得HttpResponse的引用?
- asp.net-mvc – MVC控制器操作参数为null
- ASP.NET MVC认为我的虚拟目录是一个控制器
- asp.net-mvc – IIS 7上的ASP.net MVC返回空白页
- ASP.NET:如何从javascript访问转发器生成的元素
- ASP.net MVC5中的asp.net-mvc – CORS
- asp.net – 为什么Request.Cookies在foreach循环
- asp.net – UpdatePanel没有名为’TextBox’的公
热点阅读
