Imageresizer 水印 - 改变图像

Imageresizer watermark - changing the image

我使用 asp.net imageresizer 的水印工作正常,但我希望能够通过管理功能设置水印图像。

图像路径在 web.config 中设置,但如果我覆盖此图像,水印不会改变 - 它总是显示旧图像,除非我更改 web.config。很明显它正在被缓存 - 如何将它添加到 return 带有新水印文件的图像?

我已经尝试触摸应用了水印的文件,触摸水印文件本身 - 除非我更改 web.config,否则没有任何效果,这对于实时站点是不可行的。

为了获得最佳性能,水印覆盖被缓存在内存中——因此没有磁盘检查。 Watermark 插件可以通过 C# 重新配置 - 所以如果您需要动态更改水印数据,我建议您这样做,而不是覆盖文件。这是一个新图像,所以更改文件名。这也将确保立即更新 overlays/watermarks 过时的缓存结果。

这就是我解决问题的方法,方法是创建一个新图像并为命名图层动态设置 'path'。

    public static void SetWatermarkFile(string layername, string filename)
    {
        var wp = ImageResizer.Configuration.Config.Current.Plugins.Get<ImageResizer.Plugins.Watermark.WatermarkPlugin>();
        var named = wp.NamedWatermarks[layername];
        ((ImageResizer.Plugins.Watermark.ImageLayer)((ImageResizer.Plugins.Watermark.Layer[])named)[0]).Path = WatermarkFilesPath + "/" + filename;
    }