Java: BufferedImage в растровый формат - PullRequest
11 голосов
/ 13 июня 2011

У меня есть программа, в которой я снимаю экран с помощью кода:

robot = new Robot();
BufferedImage img = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));

Теперь я хочу преобразовать этот BufferedImage в растровый формат и вернуть его через функцию для какой-то другой необходимости, а не сохранять ее в файл. Любая помощь, пожалуйста ??

Ответы [ 3 ]

7 голосов
/ 13 июня 2011

Вам нужно взглянуть на ImageIO.write.

Если вы хотите получить результат в виде массива byte[], вы должны использовать ByteArrayOutputStream:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(yourImage, "bmp", baos);
baos.flush();
byte[] bytes = baos.toByteArray();
baos.close();
2 голосов
/ 13 июня 2011

Когда вы говорите «в битовый формат», вы имеете в виду данные (как в байтовом массиве)? Если это так, то вы можете использовать ImageIO.write (как предложено выше).
Если вы не хотите сохранять его в файл, а просто хотите получить данные, можете ли вы использовать ByteArrayOutputStream, например:

ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(img, "BMP", out);
byte[] result = out.toByteArray();
1 голос
/ 13 июня 2011

Чтобы увидеть типы изображений, доступные для записи в J2SE (например, JAI), см. ImageIO.getWriterFileSuffixes():

EG

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, форматов и соответствующих читателей.

...