如何使用Raster读取WritableImage的每个像素?

时间:2019-01-21 18:41:11

标签: java image raster getpixel

我必须编写一种方法:

  1. 创建直方图
  2. 读取灰度图像中的所有像素值(宽度和高度可变)
  3. 填充直方图

我该怎么办?我写了一些代码,但陷入僵局。

public histogram(BufferedImage image){
    WritableRaster writableRaster = image.getRaster();

    int width = image.getWidth();
    int height = image.getHeight();

    int pixelValue;

    for (int y = 0; y < height; y++) {
        for (int x = 0; x < width; x++) {
            pixelValue = writableRaster.setDataElements(x, y, width, height, );
        }
    }
} 

1 个答案:

答案 0 :(得分:0)

以下代码段应有帮助:

    Raster raster = image.getRaster();
    int numBands = raster.getSampleModel().getNumBands();

    int width = image.getWidth();
    int height = image.getHeight();

    for (int y = 0; y < height; y++) {
      for (int x = 0; x < width; x++) {
        int[] pixelValue = new int[numBands];
        raster.getPixel(x, y, pixelValue);
      }
    }

如果您确实有没有alpha的灰度图像,则SampleModel将仅包含一个带。在这种情况下,pixelValue数组将包含您想要的int值。您只需要添加一个256个int值的直方图数组,并在像素值的索引处增加该值即可。