Как рассчитать необходимую ширину и высоту двух изображений?

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

bbb3549506f34b8ab862ca505dbe4a58.PNG
С фотографиями одинаковых размеров проблем нет, все делаю следующим образом:
  1. Допустим, ширина и высота изображений = 454x807
  2. Находим коэф. масштаб. - 807 / 454 = 1,77
  3. Находим сумму ширины двух изображений - 908
  4. Экран устройства, допустим = 1080, а раз наши изображения в сумме меньше 1080, то их необходимо растянуть(было бы больше, сужали бы)
  5. 1080 - 908 = 172, делим данное число на количество изображений, то есть на 2 = 86
  6. Прибавляем к ширине каждой фотографии полученное число - 454 + 86 = 540
  7. И находим ее новую высоту - 540 * 1,77 = 959,8 (среднее из двух высот)

Все вроде бы отлично, ширина новая известна, высота то же. Все здорово, но при использовании фотографий из изображения выше (1 фото - 135x807, 2 фото - 807x605) все происходить не так, как хотелось бы (в итоге хочу получить то, что на изображении выше - примерная высота - 717, первое фото - 121 по ширине и второе 959 по ширине (достигнуто сие число путем визуального сравнения моего "творения" с оригиналом))

Как в итоге мне заставить все это дело нормально масштабироватся?
  • Вопрос задан
  • 665 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега Алгоритмы
♬♬
Есть 2 изображения со значениями ширины и высоты (w1,h1) и (w2,h2). Известна суммарная ширина двух изображений после трансформации: W.

Требуется найти коэффициенты k1 и k2 пропорционального масштабирования двух изображений, чтобы изменённые изображения:
  1. имели одинаковую высоту: k1 * h1 = k2 * h2
  2. в сумме дали нужную ширину W: k1 * w1 + k2 * w2 = W


Решите эту систему уравнений. У меня получилось
k1 = W / ( w2 * ( h1/h2 + w1/w2))
k2 = k1 * (h1/h2)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы