开发者社区 问答 正文

java如何用byte[]构造BufferedImage处理之后再输出为byte[]?

如题java如何用byte[]构造BufferedImage,处理之后怎么再输出为byte[]?

展开
收起
蛮大人123 2016-03-05 11:51:42 2430 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    1.byte[] -> BufferedImage
    BufferedImage bi1 = ImageIO.read(new ByteArrayInputStream(byte[]));
    2.BufferedImage -> byte[]
    `ByteArrayOutputStream out = new ByteArrayOutputStream();
    ImageIO.write(img, "PNG", out);
    out.toByteArray()`
    如果你的图像来自于别的编码格式的话,比如一般摄像头采集的都是YUV,那么你需要先进行解码,转换成RGB的,否者该类无法使用。
    后面,如果你要获取一个BufferedImage的rgb像素信息,可以使用其方法:
    int[] getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize)
    如果需要非常高效的处理这些数据,可以使用jni去处理解码的计算,可以极大提高运行效率。

    2019-07-17 18:53:08
    赞同 展开评论