问题 Java:BufferedImage到Bitmap格式


我有一个程序,我使用代码捕获屏幕:

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

现在我想将此BufferedImage转换为Bitmap格式并通过函数返回它以满足其他需要,而不是将其保存在文件中。有什么帮助吗?


4296
2018-06-13 13:26


起源

stackoverflow.com/questions/3961687/... - John


答案:


你需要看看 ImageIO.write

如果你想以a的形式得到结果 byte[] 数组,你应该使用 ByteArrayOutputStream

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(yourImage, "bmp", baos);
baos.flush();
byte[] bytes = baos.toByteArray();
baos.close();

7
2018-06-13 13:28



好吧,我已经看过那个类,但它写入文件流,但我不想将其写入文件,我想将其转换为内存本身的位图格式,并通过一个功能返回它。 - Anand S Kumar
更新了答案。 - aioobe
谢谢,我认为这可能会有所帮助!! - Anand S Kumar


当你说“进入位图格式”时,你的意思是数据(如在字节数组中)?如果是这种情况,那么你可以使用 ImageIO.write (如上所述)。
如果您不想将其保存到文件中,但只想获取数据,可以使用 ByteArrayOutputStream 喜欢这个:

ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(img, "BMP", out);
byte[] result = out.toByteArray();

2
2018-06-13 13:42





要查看可在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);
        }
    }
}

产量

对于Windows 7上的Sun Java 6 JRE。

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

观点差不多 ImageIO MIME类型,格式和相应读者的方法。


1
2018-06-13 14:51