Изображение преобразуется в оттенки серого RGB.
Далее, Grayscale-изображение преобразуется в массив, который выполняется для определения преобразования. В результате массив состоит из «0» и «255».Неправильное преобразование из массива в BufferedImage
Затем мне нужно превратить этот массив в BufferedImage.
Я использовал код:
public static BufferedImage getImageFromArray(int pixelsMain[][], int width, int height) throws IOException {
int pixels[] = new int[320*240];
for(int i=0, numb=0; i<pixelsMain.length; i++)
for(int j=0; j<pixelsMain[i].length; j++){
pixels[numb]=pixelsMain[i][j];
numb++;
}
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
WritableRaster raster = (WritableRaster) image.getData();
raster.setPixels(0,0,width,height,pixels);
try {
ImageIO.write(image, "bmp", new FileOutputStream("[path]"));
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
Однако, после выполнения метода - все значения "255" преобразуется в "-1".
В результате изображение полностью черное.
Не могли бы вы рассказать, как решить проблему?
Вы имели в виду 255? Это просто интерпретация: 255 unsigned char == -1 signed char –
Это правда) исправлено) Если перевод правильный - по какой-то причине изображение записывается на диск как черный прямоугольник? – TorchTT