Вы можете использовать ImageIO API .
Детали могут быть немного сложными, но сначала вы, вероятно, захотите создать BufferedImage, используя тип TYPE_BYTE_INDEXED и некоторый подходящий экземпляр IndexColorModel. Затем поместите туда свой байтовый массив. Подсказка: вы можете получить внутреннее представление BufferedImage с помощью:
myDataBuffer = myBufferedImage.getRaster().getDataBuffer();
Который, скорее всего, вернет буфер данных типа DataBufferByte (check!), Из которого вы получите байтовый массив с
myByteArray = ((DataBufferByte) myDataBuffer).getData();
Затем вы можете использовать System.arraycopy, чтобы скопировать в него свой байтовый массив.