如何将字节数组转换为PNG图像?

时间:2016-04-03 18:10:05

标签: java png bufferedimage

如何将字节数组转换为PNG图像(不是JPEG)?我知道这个过程需要转换为BufferedImage作为一个步骤。

我在编写隐写术时遇到了这个问题。

1 个答案:

答案 0 :(得分:0)

假设你有一个长度=(图像宽度*图像高度* 3)的字节数组。首先,我们将数据打包成BufferedImage:

import java.awt.BufferedImage;
byte[] b = (...);
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int y = 0; y < height; y++) {
    for (int x = 0; x < width; x++) {
        int off = (y * width + x) * 3;
        int pix = (b[off] & 0xFF) << 16;  // Red component
        pix |= (b[off + 1] & 0xFF) << 8;  // Green component
        pix |= (b[off + 2] & 0xFF) << 0;  // Blue component
        img.setRGB(x, y, pix);
    }
}

然后我们编写PNG图像文件:

import javax.imageio.ImageIO;
ImageIO.write(img, "png", new File("output.png"));