2

我有像素值的一维数组,我可以通过这种方式获得红色、绿色和蓝色。

int rgb[] = new int[]
        {
            (argb >> 16) & 0xff, //red
            (argb >>  8) & 0xff, //green
            (argb      ) & 0xff  //blue
        };

我也知道我想要创建的图像的宽度高度。所以,我总共有以下数据。1)新图像的宽度 2)新图像的高度 3)像素值的一维数组。

我的主管建议我使用 createRaster 方法,但函数参数对我来说很难理解。你能给我一些简单的代码吗?谢谢。

4

2 回答 2

1

如上一篇SO 帖子所述:

public static Image getImageFromArray(int[] pixels, int width, int height) {
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
            WritableRaster raster = (WritableRaster) image.getData();
            raster.setPixels(0,0,width,height,pixels);
            return image;
        }

如果您无法理解参数是什么,您应该查看Java 文档

于 2012-02-01T11:02:52.543 回答
0

你可以:

 InputStream is = new ByteArrayInputStream(rgb);
 Image img = ImageIO.read(is);

rgb 应该是一个字节数组。

于 2012-02-01T10:59:56.727 回答