使用.NET 3.5扩展和提供映像

时间:2010-10-27 13:21:34

标签: .net asp.net asp.net-mvc http

我正在开发一个Web应用程序,其中图像必须动态扩展并尽可能快地提供给客户端(开销较低)。我需要创建一些可以将高质量PNG缩放并压缩成中等质量JPEG的东西。

现在,有多种方法可以做到这一点,我有点困惑哪种方法为应用程序提供尽可能快的最佳解决方案 - 我希望你们能指导我朝着正确的方向发展。

此应用程序将在.NET 3.5平台上运行,我正在寻找新的方法。谷歌搜索给了我一些线索,但我发现的大部分文章都很旧(2000-2005左右)。

客户端应用程序是用ASP.NET MVC编写的,而后端应用程序是用Web窗体编写的。这些图像位于Web窗体应用程序的目录中,但我想这并不是说图像处理程序必须用Web窗体编写。

那么,你有什么建议吗?

  • 使用的合适技术(HTTP处理程序,MVC,使用FTP或其他东西的静态文件?)
  • 关于这个问题的任何好文章(不用我的旧文章)
  • 如何缓存图片?

3 个答案:

答案 0 :(得分:1)

您是否考虑过专用的图像服务器?例如Scene 7或类似的东西?

您可以自己构建一个,但除非这是您的核心应用程序功能的一部分,否则使用预先构建的东西(无论是付费还是免费)可能会更好。

答案 1 :(得分:0)

1)我个人会使用ASP.NET MVC而不是重新发明轮子。实现任何自定义处理程序只能稍微快一些,我认为不值得。我还没有看过ImageResult,但很容易创建一个可以处理各种文件类型的文件。

2)缩放图像是一项相当容易的任务。我个人会使用OpenCV来做到这一点,因为它非常快速和灵活。它还有一个托管包装器(Emgu),但我还没有使用它。

3)只需使用ASP.NET缓存,我将使用图像路径及其比例来设置图像的URL。例如http://server/image1/0.5

答案 2 :(得分:0)

IMO,你使用什么并不重要 - 处理程序(ashx),页面(aspx)或MVC来调整大小和服务图像。如果您需要用户友好的URL,请使用路由。但最重要的是使用缓存 - 您可以设置响应缓存标头和/或使用ASP.NET输出缓存和/或在本地文件系统上缓存缩略图图像(IMO,您应该在所有级别缓存以获得最佳性能)。

请在此处查看一个用于生成缩略图的示例代码:http://www.west-wind.com/weblog/posts/283.aspx(这个实际上很旧,但它说明了输出缓存的使用)。

请参阅此文章,了解使用GDI / WPF / WIC调整图像大小的比较(速度与质量):http://weblogs.asp.net/bleroy/archive/2009/12/10/resizing-images-from-the-server-using-wpf-wic-instead-of-gdi.aspx