2013-05-14 4 views
1

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

BufferedImage img1 = new BufferedImage(800, 600, 
        BufferedImage.TYPE_INT_RGB); 
      img1.createGraphics() 
        .drawImage(
          ImageIO.read(
            new File("/home/rvkydmpo/webapps/ROOT/images/profilePicture/" 
              + fileName)).getScaledInstance(800, 
            600, Image.SCALE_SMOOTH), 0, 0, null); 
      ImageIO.write(img1, "jpg", new File("/home/rvkydmpo/webapps/ROOT/images/profilePicture/" +fileName)); 
+0

возможно дубликат [Изменить размер изображения, сохраняя при этом соотношение сторон в Java] (http://stackoverflow.com/questions/991349/resize-image-while -keeping-aspect-ratio-in-java) – wchargin

ответ

2

Вы можете прочитать the docs of getScaledInstance():

Image java.awt.Image.getScaledInstance(int width, int height, int hints) 

Создает уменьшенную версию этого образа. Новый объект изображения возвращается , который будет отображать изображение по указанной ширине и высоте на по умолчанию. Новый объект Image может быть загружен асинхронно, даже если исходное исходное изображение уже полностью загружено.

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

(курсив мой)

+0

Как рассчитать высоту и ширину в функции 'getScaledInstance' так, чтобы она поддерживала исходное соотношение сторон. –

0

Я не знаю, на каком сервере вы используете свой код, но если вы используете его на системе, основанной Linux вы можете использовать ImageMagick конвертировать команду.

Там также библиотека Java доступна для вызова imagemaick это называется JMagick

+0

Это не имеет никакого отношения к серверу. Нет необходимости использовать 'imagemagick'. Java имеет функциональность, в которой он нуждается. – wchargin

Смежные вопросы