Konwertuj BufferedInputStream na obraz [duplikat]

To pytanie ma już tutaj odpowiedź:

ImageIO.read zwraca wartość null w tablicy bajtów 1 odpowiedź

Mam problem z przekształceniem obiektu blob w buforowany obraz, dzięki czemu mogę go użyć. Dostaję blob (obraz jpg) z mojej bazy danych, którą przesłałem za pomocą strumienia wejściowego. W mojej bazie danych jest przechowywany jako BufferedInputStream, który zauważam. Dostaję blob w porządku, jest to kilka dziwnych symboli i mówi, że to jpg, więc obraz musi być w porządku. Czy ktoś może zauważyć, co robię źle? Może źle to przekonam? W image = ImageIO.read (new ByteArrayInputStream (data)); Obraz zwraca wartość null.

@GET
@Path("{id}")
 @Produces("image/*")
public Response post(@PathParam("id") String id) throws IOException {
    Connection con = connection();
    Blob blob = getPhoto(con);
    BufferedImage image = null;
    byte[] data = null;
    int blobLength = 0;
    try {
        blobLength = (int) blob.length();
        data = blob.getBytes(1, blobLength);
        image = ImageIO.read(new ByteArrayInputStream(data));
    //  ImageIO.write(image, "JPEG", new File("C:/Users/Nicolas/Desktop/image.jpg"));
    } catch (SQLException e2) {
        e2.printStackTrace();
    }  

    return Response.ok(image).build();
}

Jak piszę do bazy danych

public void postPhoto(Connection con, InputStream uploadedInputStream){

String mySQL = "INSERT INTO photos (photo) values (?)";
PreparedStatement pStmt = con.prepareStatement(mySQL);
pStmt.setBlob(1, uploadedInputStream);
pStmt.execute();
}

Jak wysłać plik do mojego serwletu

var fileInput = document.getElementById('file');
var file = fileInput.files[0];
var formData = new FormData();
formData.append("file", file);

var parameters="first="+firstName+"&last="+lastName+"&file="+file;

xmlhttp.open("post","http://localhost:8080/restService/api/submitinfo",true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send(formData);

questionAnswers(1)

yourAnswerToTheQuestion