У меня есть двумерный байтовый массив I [] [], каждая запись в котором либо 0, либо -1 (т. Е. 255)
Теперь я использую следующий код для записи изображения в формате RGB,
public void writeImage(String outputFileName){
BufferedImage BI = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for(int y = 0;y < height;y++){
for(int x = 0;x < width;x++){
int gray = (int) I[y][x] & 0xFF;
int newRGB = (gray << 16) + (gray << 8) + gray;
BI.setRGB(x, y, newRGB);
}
}
try{
ImageIO.write(BI, "JPG", new File(outputFileName));
} catch(IOException e){
System.err.println("Unable to output results");
}
}
Изображение написано успешно.Поскольку исходный массив данных содержал только два разных значения (0 и 255), я ожидал, что записанное изображение также будет иметь два разных уровня.Однако написанное изображение имеет 92 различных уровня.Что я делаю не так?