Requesting help in the creation of a TUint8 tensor from image pixel bytes

Greetings and best wishes for a happy set of holidays.

I am now able to fill a TUint8 tensor with the byte[] array from grayscale image pixels. Setting the NDArray one pixel at a time looks horribly inefficient. I was hoping someone might be willing to suggest a way to improve the code.

BufferedImage buffImg = //provide a grayscale Bufferedimage
byte[] bA = //get the byte[] array of gray values from buffImg
int width = buffImg.getWidth();
int height = buffImg.getHeight();
Shape theShape = Shape.of(1,height,width,1);
ByteNdArray pixValueMatrix = NdArrays.ofBytes(theShape);
for(int j=0; j<height; j++)
   for(int i=0; i<width; i++)
      pixValueMatrix.setByte(bA[j*width+i],0,j,i,0);
TUint8 theTens = TUint8.tensorOf(pixValueMatrix);