Как сохранить BufferedImage как файл

Я использую imgscalr библиотеку Java для изменения размера изображения.

Результат вызова метода resize() - это объект BufferedImage. Теперь я хочу сохранить это как файл (обычно .jpg).

Как я могу это сделать? Я хочу перейти от BufferedImageFile, но, возможно, это неправильный подход?

Ответ 1

File outputfile = new File("image.jpg");
ImageIO.write(bufferedImage, "jpg", outputfile);

Ответ 2

Вы можете сохранить объект BufferedImage, используя метод записи javax.imageio.ImageIO. Подпись метода такова:

public static boolean write(RenderedImage im, String formatName, File output) throws IOException

Здесь im - это RenderedImage, который должен быть записан, formatName - это строка, содержащая неформальное имя формата (например, png) и output - это файловый объект, который должен быть записан. Пример использования метода для формата PNG показан ниже:

ImageIO.write(image, "png", file);

Ответ 3

Создайте и сохраните файл java.awt.image.bufferedImage в файл:

import java.io.*;
import java.awt.image.*;
import javax.imageio.*;
public class Main{
    public static void main(String args[]){
        try{
            BufferedImage img = new BufferedImage( 
                500, 500, BufferedImage.TYPE_INT_RGB );

            File f = new File("MyFile.png");
            int r = 5;
            int g = 25;
            int b = 255;
            int col = (r << 16) | (g << 8) | b;
            for(int x = 0; x < 500; x++){
                for(int y = 20; y < 300; y++){
                    img.setRGB(x, y, col);
                }
            }
            ImageIO.write(img, "PNG", f);
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}

Примечания:

  • Создает файл MyFile.png.
  • Изображение размером 500 на 500 пикселей.
  • Перезаписать существующий файл.
  • Цвет изображения черный с синей полосой в верхней части.

Ответ 4

  • Загрузите и добавьте imgscalr-lib-xxjar и imgscalr-lib -xx-javadoc.jar в ваши библиотеки проектов.
  • В вашем коде:

    import static org.imgscalr.Scalr.*;
    
    public static BufferedImage resizeBufferedImage(BufferedImage image, Scalr.Method scalrMethod, Scalr.Mode scalrMode, int width, int height)  {
        BufferedImage bi = image;
        bi = resize( image, scalrMethod, scalrMode, width, height);
    return bi;
    }
    
    // Save image:
    ImageIO.write(Scalr.resize(etotBImage, 150), "jpg", new File(myDir));
    

Ответ 5

Как один вкладыш:

ImageIO.write(Scalr.resize(ImageIO.read(...), 150));