Ответ кроется в Руководстве по написанию / сохранению изображения в документации Java .
Image I/O
Класс предоставляет следующий метод для сохранения изображения:
static boolean ImageIO.write(RenderedImage im, String formatName, File output) throws IOException
В руководстве объясняется, что
Класс BufferedImage реализует интерфейс RenderedImage.
так что его можно использовать в методе.
Например,
try {
BufferedImage bi = getMyImage(); // retrieve image
File outputfile = new File("saved.png");
ImageIO.write(bi, "png", outputfile);
} catch (IOException e) {
// handle exception
}
Важно окружить write
вызов блоком try, потому что, согласно API , метод выдает сообщение IOException
«если во время записи возникает ошибка»
Также объясняются более подробно цель, параметры, возвраты и выбросы метода:
Записывает изображение с помощью произвольного ImageWriter, поддерживающего данный формат, в файл. Если файл уже присутствует, его содержимое отбрасывается.
Параметры:
im - визуализируемое изображение для записи.
formatName - строка, содержащая неофициальное имя формата.
output - файл для записи.
Возвращает:
false, если подходящий писатель не найден.
Броски:
IllegalArgumentException - если какой-либо параметр имеет значение null.
IOException - если при записи возникла ошибка.
Однако formatName
все еще может показаться довольно расплывчатым и двусмысленным; руководство немного проясняет это:
Метод ImageIO.write вызывает код, реализующий PNG, записывающий «плагин записи PNG». Термин «подключаемый модуль» используется, поскольку ввод-вывод изображений является расширяемым и может поддерживать широкий спектр форматов.
Но всегда присутствуют следующие плагины стандартных форматов изображений: JPEG, PNG, GIF, BMP и WBMP.
Для большинства приложений достаточно использовать один из этих стандартных плагинов. У них есть то преимущество, что они легко доступны.
Однако вы можете использовать и другие форматы:
Класс Image I / O предоставляет возможность подключаемой поддержки дополнительных форматов, которые можно использовать, и существует множество таких подключаемых модулей. Если вас интересует, какие форматы файлов доступны для загрузки или сохранения в вашей системе, вы можете использовать методы getReaderFormatNames и getWriterFormatNames класса ImageIO. Эти методы возвращают массив строк, в котором перечислены все форматы, поддерживаемые этой JRE.
String writerNames[] = ImageIO.getWriterFormatNames();
Возвращаемый массив имен будет включать любые дополнительные установленные плагины, и любое из этих имен может использоваться в качестве имени формата для выбора автора изображения.
Полный практический пример можно найти в примере Oracle SaveImage.java
.