【问题标题】:Java : BufferedImage to Bitmap formatJava : BufferedImage 到 Bitmap 格式
【发布时间】:2011-09-13 22:27:35
【问题描述】:

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

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

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

【问题讨论】:

标签: java bitmap bufferedimage


【解决方案1】:

你需要看看ImageIO.write

如果你想要byte[]数组形式的结果,你应该使用ByteArrayOutputStream

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

【讨论】:

  • 好吧,我已经查看了该类,但它写入文件 Stream 但我不想将其写入文件我想将其转换为内存中的位图格式并通过函数返回.
  • 谢谢你,我认为这可能会有所帮助!
【解决方案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);
            }
        }
    }
    

    输出

    对于 Windows 7 上的这个 Sun Java 6 JRE。

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

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

    【讨论】:

      【解决方案4】:

      你可以这样做:

      public Bitmap getBitmapFromBufferedImage(BufferedImage image)
      {
           return redResult.getBitmap();
      }
      

      【讨论】:

      • 在我的 IDE 中没有这样的BufferedImage::getBitmap()
      • 哦...是的,没错。你能告诉我你的用例吗?
      猜你喜欢
      • 2011-11-02
      • 2011-07-27
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 2013-07-24
      相关资源
      最近更新 更多