Erro BufferedImage

Pessoal, boa noite!

Preciso de uma ajuda, estou adicionando os valores de um BufferedImage em uma matriz, quando eu passo como parâmetro um BufferedImage de uma imagem de uma pasta, funciona normal, só que quando eu passo BufferedImage de uma captura de tela não funciona.

Com um BufferedImage de uma imagem de uma pasta funciona:
BufferedImage image = ImageIO.read(new File(System.getProperty("user.home") + "/Documents/image.png"));

Só que assim não:
BufferedImage image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));

Alguém sabe porque isso ocorre?

private static int[][] convertTo2DWithoutUsingGetRGB(BufferedImage image) {

      final byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
      final int width = image.getWidth();
      final int height = image.getHeight();
      final boolean hasAlphaChannel = image.getAlphaRaster() != null;

      int[][] result = new int[height][width];
      if (hasAlphaChannel) {
         final int pixelLength = 4;
         for (int pixel = 0, row = 0, col = 0; pixel + 3 < pixels.length; pixel += pixelLength) {
            int argb = 0;
            argb += (((int) pixels[pixel] & 0xff) << 24); // alpha
            argb += ((int) pixels[pixel + 1] & 0xff); // blue
            argb += (((int) pixels[pixel + 2] & 0xff) << 8); // green
            argb += (((int) pixels[pixel + 3] & 0xff) << 16); // red
            result[row][col] = argb;
            col++;
            if (col == width) {
               col = 0;
               row++;
            }
         }
      } else {
         final int pixelLength = 3;
         for (int pixel = 0, row = 0, col = 0; pixel + 2 < pixels.length; pixel += pixelLength) {
            int argb = 0;
            argb += -16777216; // 255 alpha
            argb += ((int) pixels[pixel] & 0xff); // blue
            argb += (((int) pixels[pixel + 1] & 0xff) << 8); // green
            argb += (((int) pixels[pixel + 2] & 0xff) << 16); // red
            result[row][col] = argb;
            col++;
            if (col == width) {
               col = 0;
               row++;
            }
         }
      }

      return result;
   }

Qual seria o erro?

O erro é esse aqui:

Exception in thread "main" java.lang.ClassCastException: class java.awt.image.DataBufferInt cannot be cast to class java.awt.image.DataBufferByte (java.awt.image.DataBufferInt and java.awt.image.DataBufferByte are in module java.desktop of loader 'bootstrap')
	at PerformanceTest.convertTo2DWithoutUsingGetRGB(PerformanceTest.java:55)

Qual linha de comando tem na linha 55 do seu código?

Tente:
((DataBufferByte) image.getData().getDataBuffer()).getData();

O código da linha 55 é esse:
final byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();

Não deu certo com ((DataBufferByte) image.getData().getDataBuffer()).getData();.

Eu consegui utilizando ao invés de byte usar int[].

int[] pixels = ((DataBufferInt)image.getRaster().getDataBuffer()).getData();

Sabe me dizer se é possível transformar int[] em byte[] ?

Possível é, mas você sabe que cada pixel de uma imagem RGB possui 3 bytes né?
Se for RGBA possui 4 bytes.
Então seu array de byte terá de ser 3 ou 4 vezes maior que o array de int.