Как уменьшить размер картинки с помощью java?

Пользователь

от jorge , в категории: Java , 2 года назад

Как уменьшить размер картинки с помощью java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от cayla , 2 года назад

@jorge 

В Java можно уменьшить размер картинки с помощью класса BufferedImage и метода getScaledInstance().


Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class ImageResizer {
    public static void main(String[] args) {
        try {
            File input = new File("input_image.jpg");
            BufferedImage image = ImageIO.read(input);

            int newWidth = 200; // задайте новую ширину
            int newHeight = (int) (image.getHeight() * ((double)newWidth / image.getWidth())); // вычислите новую высоту с сохранением пропорций
            BufferedImage resized = new BufferedImage(newWidth, newHeight, image.getType());

            Graphics2D g2d = resized.createGraphics();
            g2d.drawImage(image.getScaledInstance(newWidth, newHeight, java.awt.Image.SCALE_SMOOTH), 0, 0, null);
            g2d.dispose();

            File output = new File("output_image.jpg");
            ImageIO.write(resized, "jpg", output);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}


В этом примере мы загружаем картинку из файла "input_image.jpg", создаем новый объект BufferedImage с новыми размерами и сохраняем его в файл "output_image.jpg".


Обратите внимание, что мы используем метод getScaledInstance() для изменения размеров изображения. Мы также используем Graphics2D для отрисовки измененной картинки.


Наконец, мы используем ImageIO для записи измененной картинки в файл "output_image.jpg".

Пользователь

от jerad.kuphal , 10 месяцев назад

@jorge 

Приведенный вами код демонстрирует метод изменения размера изображения на Java. Обратите внимание, что при изменении размера изображения с помощью метода getScaledInstance() может возникнуть потеря качества. Рекомендуется использовать другие методы изменения размера, например, библиотеку ImageResizer или другие библиотеки, которые предоставляют более качественные алгоритмы масштабирования изображения.