Java conversion byte[] à l'image

Je sais que cela semble comme une question commune mais j'ai regardé tous sur les internets, et j'ai essayé beaucoup de différents tutoriels et des méthodes pour cela. Je pense que je suis proche, mais pas sûr. Aussi je suis à l'aide de Play Framework, mais il doit être le même pour java.
voici mon erreur

javax.image.IIOException: I/O error reading PNG header!
   at com.sun.plugins.png.PNGImageReader.readHeader(Unknown Source)
   ...
   ...
Caused by: java.io.EOFException
at javax.imageio.stream.ImageInputStreamImpl.readFully(Unknown Source)
  ...

Voici mon code où je reçois l'image, entre autres choses, à partir d'un formulaire et de le convertir l'image à un byte[] et de les stocker dans MS SQL db.

@Transactional
public static Result submitTrailer(){
     filledForm = newTrailerForm.bindFromRequest();
     MultipartFormData body = request().body().asMultipartFormData();
     FilePart picture = body.getFile("file");
     String fileName = picture.getFilename();
     System.out.println(fileName);
     String contentType = picture.getContentType(); 
     System.out.println(contentType);
     final File file = picture.getFile();
     filledForm.get().setContentType(contentType);

     try{
     BufferedImage originalImage = ImageIO.read(file);
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     ImageIO.write(originalImage, contentType, baos);

     filledForm.get().setImage(baos.toByteArray());
     baos.flush();
     baos.close();
     filledForm.get().save();
     }catch(IOException e){
         e.printStackTrace();
     }

    return ok(views.html.index.index.render());
}

c'est là que je suis en train de convertir le byte[] retour à une image afin que je puisse l'afficher en html

public File getConvertedPicture(){
    File imageFile;
    System.out.println("byteToImage() called");
    if(getImage()==null){
        System.out.println("getByteImage()==null");
        return null;

    }else{
        try{
        ByteArrayInputStream bis = new ByteArrayInputStream(getImage());
        imageFile=File.createTempFile("pattern", ".suffix");

        Iterator<?> readers = ImageIO.getImageReadersByFormatName("PNG");


        ImageReader reader = (ImageReader) readers.next();
         Object source = bis;
         ImageInputStream iis = ImageIO.createImageInputStream(source);
         reader.setInput(iis, true);
            ImageReadParam param = reader.getDefaultReadParam();

            Image image = reader.read(0, param);
            BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
            Graphics2D g2 = bufferedImage.createGraphics();
            g2.drawImage(image, null, null);

            ImageIO.write(bufferedImage,"PNG", imageFile);
            return imageFile;

        }
        catch(IOException e){
            e.printStackTrace();
            return null;
        }
    }

Je suis un débutant, c'est ma première fois à l'aide de jeu, et la première fois à l'aide de bases de données. Tous les conseils pour obtenir ce travail serait grandement apprécié.

aussi, dans ma méthode getConvertedPicture (), je dois spécifier le type de format, est-il de toute façon de contourner ce problème afin que l'utilisateur peut télécharger n'importe quel type d'image qu'ils veulent.

L'exception semble indiquer que les octets de getImage() ne sont pas assez. Avez-vous vérifier ??
Non, je ne suis pas sûr de savoir comment. J'ai vérifié pour s'assurer de la présence de données dans mais vous ne savez pas comment faire pour vérifier si elle était réellement stocké correctement.

OriginalL'auteur mingle | 2012-06-28