java - 从 RGB 数据的 int 数组创建 PNG 文件

标签 java image

我正在从 png 图像获取 int 数组,如何将其转换为 bufferdimage 或创建新的 PNG 文件?

int[] pixel = new int[w1*h1];
        int i = 0;
        for (int xx = 0; xx < h1; xx++) {
            for (int yy = 0; yy < w1; yy++) {
                        pixel[i] = img.getRGB(yy, xx);
                        i++;
                }
         }

最佳答案

如果你有一个整数数组,它是打包的 RGB 值,这是将它保存到文件的 java 代码:

int width = 100;
int height = 100;
int[] rgbs = buildRaster(width, height);

DataBuffer rgbData = new DataBufferInt(rgbs, rgbs.length);

WritableRaster raster = Raster.createPackedRaster(rgbData, width, height, width,
    new int[]{0xff0000, 0xff00, 0xff},
    null);

ColorModel colorModel = new DirectColorModel(24, 0xff0000, 0xff00, 0xff);

BufferedImage img = new BufferedImage(colorModel, raster, false, null);

String fname = "/tmp/whatI.png";
ImageIO.write(img, "png", new File(fname));
System.out.println("wrote to "+fname);

数组 0xff0000, 0xff00, 0xff 的原因是 RGB 字节在最低有效字节中用蓝色打包。如果您打包不同的整数,请更改该数组。

关于java - 从 RGB 数据的 int 数组创建 PNG 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21031316/

相关文章:

javascript - 执行脚本Webview JavaFx

Java:从父级构造函数将项目添加到子级列表

javascript - 如何显示尚未上传的图片?

python - 如何计算android相机捕获的图像中物体的深度

css - 当浏览器缩小时,如何保持要调整大小的图像高度?

java - 从 JAVA 项目中读取 xml 文件

java - 什么时候应该在 GRPC 上关闭 channel ?

java - Java、C++、C# 等如何使用 < 和 > 来解决这种特殊的语法歧义?

python - OpenCV python 裁剪图像

java - 在 Java 中将图像对象拆分为二维数组