Как установить размер компонента изображения в Vaadin и сохранить соотношение сторон
У меня есть компонент изображения, который я хотел бы определить размер 500px на 500px. Проблема в том, что мое изображение не квадрат, но я хотел бы сохранить соотношение сторон при нажатии StreamResource на мой компонент изображения. Как я могу сделать это, кроме изменения размера изображения вручную? Другими словами, есть ли что-то внутри компонента изображения, что позволяет мне автоматически изменять размер изображения, не заставляя его становиться квадратом?
3 ответов
решение, которое я получил, состояло в том, чтобы изменить размер изображения перед отправкой его в пользовательский интерфейс. Другими словами, я делаю некоторые вычисления, где, если изображение больше 500, я затем смотрю, является ли это высотой или шириной, а затем использую то, что является самым большим в качестве базовой линии. Затем я умножаю соотношение сторон на другое измерение и преобразую изображение соответственно.
Так, например, если у меня есть изображение 800x600, я буду предполагать использовать 800 в качестве базовой линии, то есть 500/800 это означает, что изображение должно быть уменьшено до 62,5% от его размера. Затем я уменьшаю 600 на 62,5%, как в 600 * 0,625 = 375. Поэтому я изменяю размер изображения с помощью библиотеки изображений до 500x375. И если изображение было 600x800, я бы изменил его размер до 375x500. Другими словами, я предварительно обрабатываю изображение и полагаюсь на что-либо в GUI, чтобы управлять этим для меня.
используя css, вы можете обеспечить максимальную ширину и высоту для достижения желаемого вида.
в первую очередь изменить свой mytheme.scss
file и добавьте запись css. Должно выглядеть примерно так
@mixin mytheme {
@include valo;
.maxSize500 {
max-width: 500px;
max-height: 500px;
}
}
чтобы применить это правило с помощью кода используйте addStyleName и установите размер в undefined. Ex:
myImageComponent.setSizeUndefined(); // this line may not be needed in your project (it wasn't in mine)
myImageComponent.addStyleName("maxSize500");
Теперь создайте, повторно запустите свой проект, и вы должны быть g2g.
hths!
я столкнулся с этой же проблемой. Мне пришлось создать свою собственную логику для изменения высоты и ширины изображения(ов) на основе ширины пикселя браузера. Я не верю, что есть что-то из коробки в фреймворк Vaadin, который может справиться с этим.
что-то вроде этого:
if (browserWidth <= 1250){
height = x;
width = x;
}else if (browserWidth <= 1500){
height = x;
width = x;
}else if (browserWidth <= 1750){
height = x;
width = x;
}else if (browserWidth <= 2000){
height = x;
width = x;
}else {
height = x;
width = x;
}
надеюсь, что это поможет.