Java: формат BufferedImage to Bitmap
У меня есть программа, в которой я захватываю экран с помощью кода:
robot = new Robot();
BufferedImage img = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
Теперь я хочу преобразовать этот BufferedImage в формат Bitmap и вернуть его через функцию для какой-либо другой необходимости. Не сохранять ее в файле. Любая помощь пожалуйста??
Ответы
Ответ 1
Вам нужно взглянуть на ImageIO.write
.
Если вы хотите получить результат в форме массива byte[]
, вы должны использовать ByteArrayOutputStream
:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(yourImage, "bmp", baos);
baos.flush();
byte[] bytes = baos.toByteArray();
baos.close();
Ответ 2
Когда вы говорите "в формат битмапа", вы тогда подразумеваете данные (как в массиве байтов)? В этом случае вы можете использовать ImageIO.write
(как указано выше).
Если вы не хотите сохранять его в файле, но хотите получить данные, можете ли вы использовать ByteArrayOutputStream
следующим образом:
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(img, "BMP", out);
byte[] result = out.toByteArray();
Ответ 3
Чтобы просмотреть типы изображений, доступные для записи в J2SE (например, JAI), см. ImageIO.getWriterFileSuffixes()
:
например.
class ShowJavaImageTypes {
public static void main(String[] args) {
String[] imageTypes =
javax.imageio.ImageIO.getWriterFileSuffixes();
for (String imageType : imageTypes) {
System.out.println(imageType);
}
}
}
Выход
Для этого Sun Java 6 JRE в Windows 7.
bmp
jpg
wbmp
jpeg
png
gif
Press any key to continue . . .
См. аналогичные методы ImageIO
для типов, форматов и соответствующих считывателей MIME.