代码之家  ›  专栏  ›  技术社区  ›  Mickel

使用.NET 3.5缩放和提供图像

  •  1
  • Mickel  · 技术社区  · 14 年前

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

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

    这个应用程序将在.NET 3.5平台上运行,我正在寻找新的方法来实现这一点。谷歌给了我一些线索,但我发现的大多数文章都很古老(2000-2005年左右)。

    客户端应用程序是用ASP.NET MVC编写的,而后端应用程序是用Web表单编写的。图像位于Web窗体应用程序中的一个目录中,但我想Dosen并没有说图像处理程序必须用Web窗体编写。

    那么,你有什么建议吗?

    • 要使用的合适技术(HTTP处理程序、MVC、带有ftp的静态文件或其他内容?)
    • 有关于这个问题的好文章吗(不用说旧的了)
    • 如何缓存图像?
    3 回复  |  直到 14 年前
        1
  •  1
  •   Eric Petroelje    14 年前

    你有没有想过一个专用的图像服务器?例如 Scene 7 或者类似的东西?

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

        2
  •  0
  •   Aliostad    14 年前

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

    2)缩放图像是一项相当简单的任务。我个人会使用opencv来实现这一点,因为它非常快速和灵活。它还有一个托管包装器(emgu),但我没有使用它。

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

        3
  •  0
  •   VinayC    14 年前

    在我看来,使用什么并不重要——handler(ashx)、page(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