Как я могу прочитать каждый пиксель WritableImage с растром? - PullRequest
0 голосов
/ 21 января 2019

Мне нужно написать метод, который:

  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 голосов
/ 21 января 2019

Следующий фрагмент кода должен помочь:

    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);
      }
    }

Если у вас действительно есть изображение в градациях серого без альфы, SampleModel будет содержать только одну полосу.В этом случае массив pixelValue будет содержать желаемое значение типа int.Вам нужно только добавить массив гистограмм с 256 значениями int и увеличить значение по индексу значения вашего пикселя.

...