Расчет максимально возможного прямоугольника - PullRequest
3 голосов
/ 30 июня 2011

Я загружаю некоторые изображения на сайт. Они все виды разных размеров. Как я могу определить самый большой прямоугольник 4: 3, который я мог получить из этого конкретного изображения, не поворачивая изображение?

Ответы [ 3 ]

4 голосов
/ 30 июня 2011

Если соотношение сторон меньше 4: 3, сохраните исходную ширину и используйте высоту width*3/4. Если соотношение сторон больше 4: 3, сохраните исходную высоту и используйте ширину height*4/3.

3 голосов
/ 30 июня 2011

IIUC эта проблема очень похожа на общую проблему максимизации изображения в данной прямоугольной области.

Предположим, что ваш экран W * H пикселей (с W = 4 * H / 3) и что изображение dx * dy, тогда вы можете растянуть изображение, чтобы максимизировать его внутри экрана, используя масштабный коэффициент

sf = min(W / dx, H / dy)

потому что W / dx будет масштабным коэффициентом, который делает изображение такой же ширины экрана, а H / dy будет масштабным коэффициентом, который сделает его такой же высоты.

Если взять минимум из двух, то изображение будет полностью умещаться и ни один пиксель не выйдет за пределы экрана ... взяв максимум вместо этого, вы убедитесь, что экран будет полностью покрыт (частью) изображением и может быть полезно, если вы пытаетесь получить обои из изображения.

Если у вас есть коэффициент масштабирования, формулы, необходимые для центрирования, просты:

x0 = (W - dx * sf) / 2
y0 = (H - dy * sf) / 2

и вам просто нужно нарисовать изображение, масштабированное до sf, начиная с позиции (x0, y0).

0 голосов
/ 30 июня 2011

Сначала поверните изображение так, чтобы его соотношение сторон было не менее 1. Теперь, если ваше соотношение сторон больше 4/3, сохраните высоту и обрежьте ширину; если соотношение сторон меньше, сохраните ширину и обрежьте высоту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...