0

我正在尝试在通用处理程序的帮助下获取原始图像的缩略图,以获取请求的宽度和高度。但我想授权对一些有限的宽度和高度的请求。前任。18*18、98*94、117*113 等。这些预定义集合之外的任何内容都将被视为错误请求。所以我想将这些预定义的高度和宽度集保存在某种数据结构中。这样当我收到一些宽度和高度的请求时,我可以检查这是否属于预定义的集合。如果没有,我可以忽略这个请求。像这样的东西:

     if(PreferredWidths.Contains(requestedWidth).Index == PreferredHeights.Contains(requestedHeight).Index)
{
           // Process request.. 
}

这是一些逻辑,我可以提出来,我想将其转换为代码(任何更好的东西都值得赞赏)。我不确定应该使用哪些数据结构来存储一组宽度和高度。有没有更好的方法,我可以用于相同的目的。因为任何假用户都可以通过更改处理程序 url 的参数 (abc.ashx?Id=123&width=20&height=30) 从浏览器更改图像来源。在内部,我正在创建缩略图,将它们保存在磁盘上并返回相同的 url。如果请求的宽度和高度集不合法,我不想做这些事情。

4

2 回答 2

4

System.Drawing 中有一个Size结构。您可以只存储尺寸列表,然后使用:

var ValidSizes = new List<Size> 
{
    new Size(18, 18),
    new Size(98, 94),
    new Size(117, 113)
};

if(ValidSizes.Any(p => p.Width == requestedWidth && p.Height == requestedHeight))
{
    // Process Request
}
于 2012-10-15T11:49:58.343 回答
2
IList<Tuple<double, double>> supported = new List<>...


// search usign LINQ
var found = supported.Where(new LambdaComparer<Tuple<double, double>>((s1, s2) =>
     { s1.Item1 == s2.Item1 && s2.Item2 == s2.Item2 }));

See for LambdaComparer in intrawebs, I would recommend John Skeet's one.

于 2012-10-15T11:51:34.877 回答