Изменение размеров изображений

Автор PremaServices - Вторник, 25 Июнь 2013. В рубриках: Java

При помощи утилиты Thumbnailator

Иногда в приложении может потребоваться "на-лету" менять размер изображения. Предположим, например, что на сервер в базу данных позволено пользователям загружать картинки. Они могут при этом грузить изображения различного разрешения, но нам необходимо приводить их все к одному знаменателю, например, по ширине. И кроме того, делать из этих картинок превьюшки.

В этом нам поможет хорошая утилита Thumbnailator, которая сделает за нас всю работу и превратит решение проблемы в пять минут.

Напишем небольшой метод, позволяющий нам менять размер картинки в любую сторону.

img
Изображение в байтах.
w
Ожидаемая итоговая ширина изображения.
t
Условие изменения.

 

import net.coobird.thumbnailator.Thumbnails;
 
public final class FileUtil {
 
	public static final int RESIZE_ALL = 0;
	public static final int RESIZE_ONLY_MINIMIZE = 1;
	public static final int RESIZE_ONLY_MAXIMIZE = 2;
 	
	public final static byte[] resizeImage (byte[] img, int w, int t) throws IOException {
 		
		ByteArrayInputStream is = new ByteArrayInputStream(img);
		ByteArrayOutputStream os = new ByteArrayOutputStream();
 		
		BufferedImage originalImage = ImageIO.read(is);
		switch (t) {
		case RESIZE_ONLY_MINIMIZE: 
			if (originalImage.getWidth() <= w) return img;
			break;
		case RESIZE_ONLY_MAXIMIZE:
			if (originalImage.getWidth() >= w) return img;
			break;
		case RESIZE_ALL:
			if (originalImage.getWidth() == w) return img;
		}
		int h = w*originalImage.getWidth()/originalImage.getHeight();
 	
		Thumbnails.of(originalImage).size(w, h).outputFormat("png").toOutputStream(os);
		return os.toByteArray();
	}
 
}

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

  • 0.0/5 оценка (0 голосов)
  • Тэги: изображение, утилита

Об авторе

Комментарии (0)

Оставить комментарий

Вы комментируете как Гость.