是否可以提供由ImageResizing处理(和缓存)的静态图像?

时间:2013-05-30 00:15:15

标签: c# asp.net imageresizer

我正在测试ImageResizing库的部分内容,特别是调整大小,磁盘缓存和水印。

我相信我已经正确安装了所有内容并且链接如下:

<img src="/images/tests/mytest.png?w=300&watermark=style1" />

在浏览器中渲染良好,并使用随机/散列文件名缓存到磁盘。但是,我无法弄清楚如何使用水印来提供静态图像。我希望diskcache能够仅基于其文件名来提供缓存的图像,但是看着它,我想它需要查询字符串(实际上它使用查询字符串静态渲染)。

我的web.config的<resizer>部分读取:

<resizer>
    <pipeline fakeExtensions=".ashx" />
    <plugins>
      <add name="DiskCache" />
      <add name="AdvancedFilters" />
      <add name="Watermark" />
      <add name="SimpleFilters" />
    </plugins>
    <diskCache dir="~/imagecache" />
    <watermarks>
      <otherimages path="~/site/watermarks" />
      <image name="style" path="~/site/watermarks/wmtest.png" imageQuery="filter=alpha(0.65)" Top="175" Left="32" />
    </watermarks>
  </resizer>

从表面上看,我喜欢ImageDraw(另一个非常强大的库)处理缓存的方式,因为您可以命名缓存文件,即使以静态方式请求也可以提供缓存文件。缺点是ImageDraw在代码隐藏中的编程要重得多。

我的主要目标是让某些带有版权信息的图片加水印,这些图片无法通过修改查询字符串来规避。次要目标是提供快速有效的大小调整和缓存,尤其是缩略图。 ImageResizing似乎非常适合我的次要目标,但看起来缓存只适用于查询字符串选项(记录),除非我错过了另一种方式...因此我的主要问题。

此外,如果不清楚,我正在测试两个库( ImageResizing ImageDraw ),以查看哪个库更适合我们的需求。现在我在Cassini本地工作,但部署将是IIS7服务器,应用程序在ASP.NET 4.0下运行。

1 个答案:

答案 0 :(得分:1)

是的,这就是它的工作原理。 DiskCache插件将图像缓存到静态文件,并在该点之后重写URL。