Asignar un bufferedImage a traves de un array de bytes desde de una peticion web

Iniciado por lovaspillando, 26 Agosto 2007, 16:12 PM

0 Miembros y 1 Visitante están viendo este tema.

lovaspillando

Hola:

Intento subir imagenes via web, y una vez subido la imagen generar un thumbail que sera almacenado en la base de datos.  Recupero un array de bytes, que me llega perfecamente, pero tengo problemas paa crear la imagen en miniatura.  He probado muchos metodos,pero todos me dan problemas.  Uno de ellos usando el JPEGEncode de sun, pero cuando intento hacer el decode me da un error que dice que no reconoce la imagen como jpeg (he verificado que si es jpeg).  Lo ultimo que he intentado es pasar el array de bytes obtenido a un ImageBuffered y lanzar el metodo getScaledInstance, pero tambien me da error, en esete caso, cuando creo el imagebuffered se me crea en nulo:

                InputStream in = new ByteArrayInputStream(actual.get());
                BufferedImage image = ImageIO.read(in);

Así pues ya empiezo a estar desesperado, y no se como acometer esto.  Lo único que necesito es generar y guardar en la base de datos ese thumbail.

Por fi, una ayudita.

Os pego la parte del código hasta donde da el problema, por esi el problema está en como cargo el array en memoria, pero ese array al guardarlo en mysql funciona bien, el problem esta al pasarlo a un BufferedImage:

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
       
        boolean isMultiPart;
        isMultiPart = ServletFileUpload.isMultipartContent(request);
       
        DiskFileUpload fu = new DiskFileUpload();
        fu.setSizeMax(10240*512);
        fu.setSizeThreshold(40960);
        fu.setRepositoryPath("/tmp");
        try {
            Iterator i = fu.parseRequest(request).iterator();
            FileItem actual = null;
           
            while (i.hasNext()){
                actual = (FileItem)i.next();
                String fname = actual.getName();
                Photo oPhoto = new Photo();
                oPhoto.setDesPhoto("sticked title");
                oPhoto.setBytesOriginal(actual.get());
               
//creating the bufferedImage from a JPEG stream
                InputStream in = new ByteArrayInputStream(actual.get());
                BufferedImage image = ImageIO.read(in);
                Image ri = image.getScaledInstance(150,150,150);

Gracias y un saludo


Yshua

me parece bastante confuso tu error, debe haber algo q corrompe el byte array del jpg, a mi me pasaba algo parecido ahora que recuerdo, creo q lo solucioné usando un ImageIcon y en el constructor pasarle el byte array, luego para reducir la imagen puedes usar el metodo getImageInstance, o algo parecido q tiene el imageIcon, o si no estoy mal tambien tiene el scaled.... trata de solucionarlo así, si necesitas q sea mas explícito con lo del ImageIcon, postea, y ya miro bien y te doy todo bien explícito

Baruj aba beshem Adonai.
<a href="http://www.cp666group.com">visita mi sitio CP666GROUP</a>