我正在开发一个Web应用程序,其中图像必须动态扩展并尽可能快地提供给客户端(开销较低)。我需要创建一些可以将高质量PNG缩放并压缩成中等质量JPEG的东西。
现在,有多种方法可以做到这一点,我有点困惑哪种方法为应用程序提供尽可能快的最佳解决方案 - 我希望你们能指导我朝着正确的方向发展。
此应用程序将在.NET 3.5平台上运行,我正在寻找新的方法。谷歌搜索给了我一些线索,但我发现的大部分文章都很旧(2000-2005左右)。
客户端应用程序是用ASP.NET MVC编写的,而后端应用程序是用Web窗体编写的。这些图像位于Web窗体应用程序的目录中,但我想这并不是说图像处理程序必须用Web窗体编写。
那么,你有什么建议吗?
答案 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