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

问题描述 投票:-1回答:1

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

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

java png bufferedimage
1个回答
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"));
© www.soinside.com 2019 - 2024. All rights reserved.