• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Knitter

Ler, redimensionar e exportar uma imagem para byte[]

3 mensagens neste tópico

Preciso ler uma imagem do disco, jpg/jpeg, redimensionar essa imagem e convertê-la para um vector de byte para posteriormente enviar para um base de dados.

Actualmente, o problema, prende-se com carregar a imagem correctamente para fazer a conversão.

O código que estou a usar é:

Image img = Toolkit.getDefaultToolkit().createImage(file.getAbsolutePath()).
//new ImageIcon(img);

BufferedImage bimg = new BufferedImage(100, 75, BufferedImage.TYPE_INT_RGB);
bimg.getGraphics().drawImage(img,0,0,null);

ByteArrayOutputStream bas = new ByteArrayOutputStream();
ImageIO.write(bimg, "jpeg", bas);
byte[] data = bas.toByteArray();
bas.close();

Neste momento a variável data contém um vector de zeros, o que resulta numa imagem toda preta. Pelo que percebi a BufferedImage está completamente vazia, não tendo sido escrita para o seu espaço a imagem carregada.

Se repararem, deixei uma linha comentada, se a descomentar o código funciona, se a deixar comentada o código não funciona. Simplesmente não consigo, usando código correcto, duplicar o efeito e até agora a única solução que encontrei foi deixar lá essa linha, não comentada, para garantir que a imagem é carregada antes de a tentar escrever para a BufferedImage.

Agradecia algumas luzes neste problema que me está a dar mais trabalho do que devia ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na verdade ainda estou à procura de uma solução melhor, a que tenho está a usar o truque de criar um objecto do tipo ImageIcon, como o código no link que me indicaste, o que não será o mais correcto, apesar de funcionar.

No entanto, estou numa fase de desenvolvimento do projecto, onde necessito de carregar a imagem num vector de bytes, que não me permite estar a pensar nestes pormenores.

Para já está a funcionar, mas não, o problema não está resolvido :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora