2017-06-29 40 views
0

我正在拍摄全分辨率照片的摄影网站,但不应显示/访问全分辨率照片(全幅水印的下载将通过令牌进行)。任何方式来限制在Umbraco Imageprocessor提供全分辨率图像?

I已经尝试过“restrictTo”设置,但分辨率不需要依赖于指定的尺寸。

有没有办法让默认myphoto.jpg没有查询字符串显示在例如700x700,但仍然有通过令牌下载可用的全分辨率文件?非常多,没有查询字符串的图像仍然由Imageprocessor处理,但使用默认的调整大小规则。

+0

重写URL?然后什么会阻止我使用?width = fullreswidth。 – ProNotion

+0

我想问题是我可以在配置中设置MaxWidth设置,并说我已经设置为700px,我可以通过myphoto.jpg?width = 1400请求一个原始宽度为5000px的图像,但生成的图像是完整的5000px宽度的图像,为什么最大宽度1400px图像服务?(或者至少,这是我希望完成的另一件事) – user1188128

+0

不确定,但可能扩展ImageProcessor.Web并实现您自己的IImageService.cs。它有一个IsValidRequest方法,您可以自定义以检查令牌。请参阅http://imageprocessor.org/imageprocessor-web/extending/ – Alex

回答

0

我会使用查询字符串的图像。

网址?宽度= 1400 &高度= 900 &模式=作物&锚=中心

我也快使用延迟加载这样的页面加载与小模糊的图像,然后再把替换它们全部用满res或querystring为你想显示的最大尺寸。

我为此写了一个脚本。 http://www.codeshare.co.uk/blog/lazy-loading-images/

同样在我的网站上,当我上传图片时,我会自动调整它的大小,当它保存到1080p分辨率时。因此,我可以上传大量图片,而不必担心首先调整大小,或者占用服务器上的太多空间。

下面是该代码太 http://www.codeshare.co.uk/blog/automatically-resize-your-media-images-in-umbraco/

+0

这不会阻止最终用户简单地请求没有令牌的完整大小的图像。 –

1

我可以通过myphoto.jpg与5000px天然宽度请求图像?宽度= 1400,但所得到的图像是全5000px宽度的图像,没有按为什么最大宽度1400px图像服务了吗?

如果您正在获取完整图像,则表示出现了问题。 (你可能已经用完了连续的内存),所以确保你处于64位模式。

maxWidth仅将调整大小参数限制为上限。所以没有任何事情是自己的。

什么你可能寻找的是ValidatingRequest事件

http://imageprocessor.org/imageprocessor-web/imageprocessingmodule/#events

我会先设定ImageProcessor.Web通过改变interceptAllRequestsproperty拦截在processing.config文件中的所有图片请求。这将确保您捕获任何尝试在没有令牌的情况下查看图像。

如果您可以取消请求并更改/添加任何查询字符串参数以透明地限制您的大小,而不向最终用户显示查询字符串。