BufferedImage carrega imagem inválida

Olá amigos,

Estou com um problema aqui no carregamento de uma imagem BMP. no disco ela está toda correta, consigo abrir no visualizador do windows corretamente no seguinte formato:

Porém quando eu carrego a imagem com o seguinte código

[code]public static byte[] getBytesFromFile(File file) throws IOException {
InputStream is = new FileInputStream(file);

    // Get the size of the file
    long length = file.length();

    if (length > Integer.MAX_VALUE) {
        // File is too large
    }

    // Create the byte array to hold the data
    byte[] bytes = new byte[(int)length];

    // Read in the bytes
    int offset = 0;
    int numRead = 0;
    while (offset < bytes.length
           && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
        offset += numRead;
    }

    // Ensure all the bytes have been read in
    if (offset < bytes.length) {
        throw new IOException("Could not completely read file "+file.getName());
    }

    // Close the input stream and return bytes
    is.close();
    return bytes;
}[/code]

[code] ServletOutputStream oStream = response.getOutputStream();

		BufferedImage image = new BufferedImage(800, 750,
				BufferedImage.TYPE_BYTE_GRAY);
		image.getRaster().setDataElements(0, 0, 800, 750,
				dedoAtual.getImagem());

		image = ImageUtils.resize(image, 369, 346);
		ImageIO.write(image, "jpeg", oStream);[/code]

Ela é exibida da seguinte forma:

Alguém poderia dar uma luz??

Bom, não é desse jeito que você carrega arquivos BMP. Eles não são exatamente um mapa compatível com BufferedImage (e podem até ter uma compressão RLE em alguns casos).

Como seria o carregamento?