Поскольку увеличение не является опцией, вашими опциями являются только обрезка и расширение.
Попробуйте: допустим, ваше изображение W*H
, а желаемое соотношение сторон ширины к высоте R
.
- Используя ширину и соотношение сторон, рассчитайте высоту цели
TH = W/R
- Используя высоту и соотношение сторон, рассчитайте ширину цели
TW = H*R
- Рассчитать изменения площади
aH = ABS(TH-H)*W
и aW = ABS(TW-W)*H
- , если
aH
меньше aW
, используйте ширину цели;добавьте или обрежьте изображение по горизонтали на основе знака TH-H
- В противном случае используйте высоту цели;добавьте или обрежьте изображение по вертикали, взяв
TW-W
Вот краткий пример:
Target R: 5/6
Image: W=200, H= 300;
TH = 200/5*6 = 240
TW = 300*5/6 = 250
aH = 60*200=12000
aW = 50*300=15000
Результирующее действие: поскольку aH
меньше aW
, обрезать изображение по вертикали до 240