Почему для циклической печати неожиданные результаты? - PullRequest
0 голосов
/ 25 сентября 2018

Я сканирую черно-белую фотографию размером 100x100 пикселей и пытаюсь напечатать каждую координату x и y (пиксель за пикселем), исходя из того, что она черная или белая.Поскольку оператор print работает, я вижу ожидаемый результат в консоли, но после его завершения он начинает выдавать значение 0 для каждого значения результата и печатает только к северу от x 95. Не могли бы вы объяснить, как это исправить?

public class BW
{

public static void main(String[] args) {

try {    

BufferedImage original = ImageIO.read(new File("maze.jpg"));
int red;

int[][] outcome = new int[original.getHeight()][original.getWidth()];
for(int i=0; i<original.getHeight(); i++)
{
for(int j=0; j<original.getWidth(); j++)
  {
red = new Color(original.getRGB(i, j)).getRed();

int pixel = 0;
if(red > 1)
{
outcome[i][j] = 255;
System.out.println("x: " + i + " y: " + j + " value: " + outcome[i][j]);
} else {
   outcome[i][j] = 0;
   System.out.println("x: " + i + " y: " + j + " value: " + outcome[i][j]);
} 
}
}

   } catch (IOException e) {e.printStackTrace();}
} 
}

Выход терминала ниже (он продолжается до x, равного 99, и y, если 99, с увеличением y на 1 и переключением x с 98 на 99 в середине -

Output

Это снимок экрана, который я сделал, пока он еще работал, и вы можете видеть, что он правильно вычислялся. После завершения он превращается в изображение выше.

While running

1 Ответ

0 голосов
/ 25 сентября 2018

Изменить

for(int i=0; i<original.getWidth(); i++)
{
for(int j=0; j<original.getHeight(); j++)
{

на

for(int i=0; i<original.getHeight(); i++)
{
   for(int j=0; j<original.getWidth(); j++)
   {
...