Здравствуйте.
У меня есть черно-белое изображение в BufferedImage
.
Как мне его перевести в картинку из 0
и 1
?
Число - это как пиксель, например, 0
- это белый, а 1
- это черный. Как это можно реализовать?
Например:
0 0 0 0 0
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1
0 0 1 0 0
0 0 1 0 0
0 0 1 0 0
0 0 0 0 0
Нарисовал стрелочку :D
Вы должны обойти картинку как массив пикселей и каждому пикселю сопосотавить 1 - это черный пиксель, 0 - белый.
BufferedImage image = ImageIO.read(new File("some file"));
int[][] array = new int[image.getHeight()][image.getWidth()];
for (int i = 0; i < image.getHeight(); i++) {
for (int j = 0; j < image.getWidth(); j++) {
int rgb = image.getRGB(i, j);
Color color = new Color((rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, rgb & 0xFF);
//color - это цвет пикселя.
array[i][j] = color.equals(Color.BLACK) ? 1 : 0;
}
}
Альтернатива ответу Andrew Bystrov
BufferedImage img = ImageIO.read(Test.class.getResourceAsStream("image.png"));
byte[] data = ((DataBufferByte) img.getRaster().getDataBuffer()).getData();
int[][] imgData = new int[img.getHeight()][img.getWidth()];
int counter = 0;
for (int i = 0; i < imgData.length; i++) {
for (int j = 0; j <imgData[i].length ; j++) {
imgData[i][j] = data[counter] == 0 ? 0 : 1;
counter++;
}
}
Метод для принта в консоль.
void print(int imgData[][]){
for (int i = 0; i < imgData.length; i++) {
StringBuilder line = new StringBuilder();
for (int j = 0; j <imgData[i].length ; j++) {
line.append(imgData[i][j]).append(" ");
}
System.out.println(line.toString());
}
}
Источник:
Результат:
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть HTML код, в нём есть div, который имеет ширину в 100%Он содержит несколько элементов