Ответ 1
File outputfile = new File("image.jpg");
ImageIO.write(bufferedImage, "jpg", outputfile);
Я использую imgscalr библиотеку Java для изменения размера изображения.
Результат вызова метода resize() - это объект BufferedImage. Теперь я хочу сохранить это как файл (обычно .jpg).
Как я могу это сделать? Я хочу перейти от BufferedImage
→ File
, но, возможно, это неправильный подход?
File outputfile = new File("image.jpg");
ImageIO.write(bufferedImage, "jpg", outputfile);
Вы можете сохранить объект 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);
Создайте и сохраните файл 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();
}
}
}
Примечания:
В вашем коде:
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));
Как один вкладыш:
ImageIO.write(Scalr.resize(ImageIO.read(...), 150));