【问题标题】:Convert byte[] of RGB data to a image将 RGB 数据的 byte[] 转换为图像
【发布时间】:2012-02-15 18:32:35
【问题描述】:

我有一个字节[],我使用 OpenKinect 从 Kinect 捕获,它是 Java JNA 包装器。我想知道是否有任何现有的库可以用来将 RGB 数据的 byte[] 转换为可以显示/存储的图像?

【问题讨论】:

标签: java image kinect


【解决方案1】:

Java 的 BufferedImage 是一个很好的候选者

我会找出您的byte[] 的颜色编码方案并将其转换为int[],以便将BufferedImage 的RGB 数组设置为setRGB()javadoc。然后,您可以将图像以多种格式保存到磁盘,或渲染以供显示。

【讨论】:

    【解决方案2】:

    您可以将byte[] RGB 数据转换为int[],其中每个int 编码一个ARGB 像素(alpha、红色、绿色、蓝色)。然后使用下面的代码创建一个BufferedImage

    int[] pixels = new int[width * height];
    // do the conversion byte[] => int[]
    BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    img.setRGB(0, 0, width, height, pixels, 0, width);
    

    然后您可以使用 ImageIO 来保存图像:

    File outputFile = new File("image.png");
    ImageIO.write(img, "png", outputFile);
    

    或者在 JComponent 的 paint 方法中绘制图像:

    public void paint(Graphics graphics){
      Graphics2D g = (Graphics2D)graphics;
      g.drawImage(img, 0, 0, img.getWidth(), img.getHeight(), null);
    }
    

    详情请查阅相关的JavaDoc。 BufferedImage.TYPE_INT_ARGB通常是最快的图像编码(至少是不久前在 Mac OS X 和 Windows 上),即使你根本不使用任何 alpha。

    免责声明:代码示例未经测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-16
      • 2014-05-04
      • 1970-01-01
      • 2021-12-17
      • 2018-08-22
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      相关资源
      最近更新 更多