Это действительно зависит от того, какая разница между средами, которые заставляют вас использовать разные файлы web.config. Можете ли вы дать больше информации о том, почему каждая среда в настоящее время нуждается в отдельной среде?
Вероятно, не оптимально (если он работает, чего я не пробовал), но я думаю, что лучше, чем ваш текущий подход:
w: ширина прямоугольника
h: высота прямоугольника
n: количество изображений
a = w * h: площадь прямоугольника.
ia = a / n максимальная площадь изображения в идеальном случае.
il = sqrt (ia) max длина изображения в идеальном случае.
nw = round_up (w / il): количество изображений, которые нужно наложить друг на друга.
nh = round_up (h / il): количество изображений, которые вы необходимо складывать рядом друг с другом.
l = min (w / nw, w / nh): длина используемых изображений.
вы хотите что-то вроде
n = количество уменьшенных изображений x = одна сторона прямоугольника y = другая сторона l = длина стороны миниатюры
l = sqrt ((x * y) / n)
Вот мой последний код, основанный на ответе unknown (google): Для парня, который хотел узнать, на каком языке написан мой первый пост, это VisualDataflex:
Function ResizeThumbnails Integer iItems Integer iWidth Integer iHeight Returns Integer
Integer iArea iIdealArea iIdealSize iRows iCols iSize
// If there are no items we don't care how big the thumbnails are!
If (iItems = 0) Procedure_Return
// Area of the container.
Move (iWidth * iHeight) to iArea
// Max area of an image in the ideal case (1 image).
Move (iArea / iItems) to iIdealArea
// Max size of an image in the ideal case.
Move (sqrt(iIdealArea)) to iIdealSize
// Number of rows.
Move (round((iHeight / iIdealSize) + 0.50)) to iRows
// Number of cols.
Move (round((iWidth / iIdealSize) + 0.50)) to iCols
// Optimal size of an image.
Move ((iWidth / iCols) min (iHeight / iRows)) to iSize
// Check to make sure it is at least the minimum.
Move (iSize max iMinSize) to iSize
// Return the size
Function_Return iSize
End_Function
Это должно работать. Он решается с помощью алгоритма, а не уравнения. Алгоритм выглядит следующим образом:
Вот код, написано на JavaScript:
function thumbnailSize(items, width, height, min) {
var minSide = Math.min(width, height),
maxSide = Math.max(width, height);
// lets start by spanning the short side of the rectange
// size: the size of the squares
// span: the number of squares spanning the short side of the rectangle
// stack: the number of rows of squares filling the rectangle
// depth: the total depth of stack of squares
var size = 0;
for (var span = items, span > 0, span--) {
var newSize = minSide / span;
var stack = Math.ceil(items / span);
var depth = stack * newSize;
if (depth < maxSide)
size = newSize;
else
break;
}
return Math.max(size, min);
}