在ASP.NET中生成图像缩略图?
发布时间:2020-12-15 23:43:23 所属栏目: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中WebService 捕获全局异常
- asp.net – Ajax Tookit TabPanel Invisible Tag Bug
- 在asp.net中验证
- asp.net-mvc-3 – ASP.NET MVC 3:在需要模型外部的信息时验
- asp.net-mvc – 如果在Razor MVC 3中浏览器未继承视图时如何
- asp.net-mvc-3 – 如何使用MiniProfiler与单页Web应用程序/
- asp.net – 使用ViewComponent的Ajax
- asp.net-mvc – MVC禁用SelectListItem属性不起作用
- 没有业务逻辑层的ASP.Net 2.0应用程序?
- asp.net – 如何知道为什么IIS应用程序池被回收