[Dúvida] Conversão de Imagens!

1 resposta
Nicolas_Fernandes

Falae, galera do GUJ!

Beleza?

Estou com um grande problema :S

Quero converter uma imagem que eu pegar em um array de bytes, e gravar em um campo blob no Banco de Dados.
A minha codificação tá assim:

public byte[] imageToByte(String fileName) throws IOException {

        byte[] buffer = new byte[1024];
        fileName      = "C:/naruto.jpg";

        InputStream is            = getClass().getResourceAsStream( fileName );
        ByteArrayOutputStream out = new ByteArrayOutputStream();

        while (is.read( buffer ) != -1) out.write( buffer );
 
        
        return out.toByteArray();
}

O problema é que, quando faço uso do método getResourceAsStream, o objeto is fica nulo!

Seguem, então, quatro perguntas:

1. Está correto o que estou fazendo? Alguma dica de como arrumar isso?
2. O mais indicado é converter em array de bytes ou outro tipo?
3. Alguém sabe um método de fazer o inverso? Converter um campo blob em uma imagem?
4. É possível fazer o mesmo com um arquivo de música, por exemplo? Converter um arquivo .mp3 em array de bytes para gravar no Banco de Dados, por exemplo?

Desde já, grato a todos!

[]s

1 Resposta

ViniGodoy

O getResourceAsStream funciona para Resources.

Resources são arquivos no interior do seu classpath, incluindo dentro do .jar da sua aplicação, e seu caminho é relativo a raíz do classpath. Você não deve colocar letras de drives nem nada nele.

Se você quiser abrir um arquivo, use um FileInputStream:
InputStream is            = new FileInputStream( fileName );
Se você quiser mesmo abrir um recurso, especifique o caminho de forma relativa ao classpath de sua aplicação:
fileName      = "/images/naruto.jpg";  
   
         InputStream is            = getClass().getResourceAsStream( fileName );
Criado 19 de fevereiro de 2010
Ultima resposta 19 de fev. de 2010
Respostas 1
Participantes 2