Масштабирование и обрезка изображения в GWT - PullRequest
1 голос
/ 23 декабря 2011

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

Моя идея состоит в том, чтобы иметь квадратные миниатюры фиксированного размера.Для этого я пытаюсь масштабировать, а затем обрезать их.Но это не работает.Если я только масштабирую их, это работает, если я только обрезаю их, это работает, но когда я пытаюсь масштабировать и обрезать, выполняется только последняя операция.Вот что я сделал для этого:

prop = (float)img.getWidth() / img.getHeight();
thumb = new Image(img.getUrl());
if (thumb.getWidth() > thumb.getHeight()) {
    thumb.setHeight("150px");
    thumb.setWidth(String.valueOf(150 * prop) + "px");
} else {
    thumb.setWidth("150 px");
    thumb.setHeight(String.valueOf(150 * Prop) + "px");
}

offset = thumb.getHeight()*(prop-1) / 2;

if (thumb.getWidth() > thumb.getHeight()) {
    thumb.setVisibleRect((int)offset, 0, 150, 150);
} else {
    thumb.setVisibleRect(0, (int)offset, 150, 150);
}           

Я искал помощи по этому поводу и нашел несколько решений.Исходя из другого вопроса на этом сайте Я нашел это , но это не относится к моему случаю, потому что мне нужно загружать изображения динамически.Я также попытался с GWT и HTML5, следуя этому примеру , но когда выполняется следующий метод:

ImageData imageData = context.getImageData(sx, sy, sw, sh);

, возникает следующее исключение:

(NS_ERROR_DOM_INDEX_SIZE_ERR): Index or size is negative or greater than the allowed amount

Так что, если кто-нибудь знает, как это сделать с помощью чистого GWT или решить проблему с HTML5, я буду очень рад, я застрял на этом в течение многих недель: (... заранее спасибо!

...