Java:将BufferedImage转换为位图格式

11

我有一个程序,其中我使用以下代码来捕获屏幕:

robot = new Robot();
BufferedImage img = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
现在我想将这个BufferedImage转换为Bitmap格式,并通过一个函数返回它,以满足其他需求,而不是将其保存在文件中。请帮忙一下?

https://dev59.com/v1HTa4cB1Zd3GeqPPjnB - John
4个回答

7
您需要查看ImageIO.write 如果您希望将结果以byte[]数组的形式返回,则应使用ByteArrayOutputStream
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(yourImage, "bmp", baos);
baos.flush();
byte[] bytes = baos.toByteArray();
baos.close();

我已经查看了那个类,但它将数据写入文件流中,而我不想将其写入文件,我想在内存中将其转换为位图格式,并通过函数返回。 - Anand S Kumar
谢谢,我认为那可能会有帮助! - Anand S Kumar

2
当你说“转换为位图格式”时,你指的是数据(比如一个字节数组)吗?如果是这样,你可以使用ImageIO.write(就像之前建议的那样)。
如果你不想将其保存到文件中,只想获取数据,你可以像下面这样使用ByteArrayOutputStream
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(img, "BMP", out);
byte[] result = out.toByteArray();

1

要查看J2SE(例如JAI)中可用于写入的图像类型,请参见{{link1:ImageIO.getWriterFileSuffixes()}}:

例如

class ShowJavaImageTypes {

    public static void main(String[] args) {
        String[] imageTypes =
            javax.imageio.ImageIO.getWriterFileSuffixes();
        for (String imageType : imageTypes) {
            System.out.println(imageType);
        }
    }
}

输出

对于在Windows 7上运行的Sun Java 6 JRE。

bmp
jpg
wbmp
jpeg
png
gif
Press any key to continue . . .

查看类似的ImageIO方法,了解MIME类型、格式以及相应的读取器。


-1
你可以简单地这样做:
public Bitmap getBitmapFromBufferedImage(BufferedImage image)
{
     return redResult.getBitmap();
}

我的IDE中没有BufferedImage :: getBitmap() - daparic
哦...没错,你能告诉我你的使用情况吗? - Raul Lucaciu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接