Converter Image para Byte[]

Sou novato e gostria de saber como converter uma imagem que eu criei (Image img = Image.createImage("/images/ola.jpg"); ) para um byte[].

Para que você quer fazer isso?

O byte[] seria muito dependente do formato da imagem carregada.

Além disso, você pode usar o método ImageIO.write() para a maior parte das opeções envolvendo Streams e imagens. Inclusive para gerar o seu array.

use o metodo getRGB, assim, pra cada indice do array vc vai ter a informacao no formato ARGB dos pixels da imagem, vc pode separar essas informacoes usando a operacao de ‘arredandar’ (shift) os pixels pra direita, ex:

byte componente_alfa     = pixel[i] >> 24;
byte componente_vermelho = pixel[i] >> 16;
byte componente_verde    = pixel[i] >> 8;
byte componente_azul     = pixel[i] >> 0;

qlqr duvida pode falar
flw, t+

http://www.guj.com.br/posts/list/57927.java

http://www.guj.com.br/posts/list/54493.java

http://www.guj.com.br/posts/list/48467.java

topicos interessantes mas nada disso é interessante pra um dispositivo com javame

Solução !!!

:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

 public byte[] getByte(){
        
        InputStream is = this.getClass().getResourceAsStream( "/images/fox.jpg" );
        int i, len=0;
        byte bArray[] = new byte[500];
        byte bArray2[];
        byte b[] = new byte[1];
        try {
 
            while ( is.read(b) != -1 ){
                if ( len+1 >= bArray.length ){
		bArray2 = new byte[bArray.length];
		for ( i = 0; i < len; i++ ){
                        bArray2[i] = bArray[i];
                    }			
		bArray = new byte[bArray2.length+500];
		for ( i = 0; i < len; i++ ){
                        bArray[i] = bArray2[i];
                    }			
                }
                bArray[len] = b[0];
                len++;
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return bArray;
    }

Espero que ajude a todos !!!
Obrigado por postarem !

Nao seria algo mais interessante e otimizado usar um ByteArrayOutputStream ?

    public byte[] ReadImageAsByteArray (String filename) throws IOException{
        byte []buffer = new byte[1024];
        
        InputStream is = this.getClass().getResourceAsStream( filename );
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        
        while (is.read( buffer ) != -1)  {
            out.write( buffer );
        }
        return out.toByteArray();
    }    

Finalmente o que todos esperavam huahuahuauha.
Depois de ter o mesmo problema (converter um Image em um array de bytes) e ver que exitem vários tópicos sobre esse assunto sem solução aqui no GUJ finalmente consegui fazer um método que faça isso. Consegui fazer esse método juntando informações de vários outra foruns.

Abaixo está o método que transforma um Image em um array de bytes:

	public byte[] imageToByte(Image image) {	
		
		BufferedImage bi = new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB);
		Graphics bg = bi.getGraphics();
		bg.drawImage(image, 0, 0, null);
		bg.dispose();
		
		ByteArrayOutputStream buff = new ByteArrayOutputStream();		
	    try {  
	    	ImageIO.write(bi, "JPG", buff);  
	    } catch (IOException e) {  
	    	e.printStackTrace();  
	    }  
	    return buff.toByteArray();		
	}

Nota para os moderadores do GUJ: Vou passar nos tópicos em que tratam do mesmo assunto e direciona-los com um link para este tópico o/

Espero ter ajudado pessoal! Abraço!

Explica esse metodo aew, plx

vlw brother

Não entendi… o método não está funcionando com você ou queres saber como ele funciona ?

Porra 3400 visitas parabens.

Q pulo veio 3400–>3605.
Falando nisso porque ninguem ainda ousou responder minhas perguntas.

 Valeu JavaZim.

 Nota: Que pergunta ? =P  Não entendi xD

Excelente,

Consegui gerar o byteArray perfeitamente e armazenar no MySQL, mas como faço para ter uma view disso?

Ou seja, como converto o byteArray para image? Existe uma maneira de converter o biteArray sem a necessidade de salvar a imagem convertida no FTP/Máquina do usuário?

Desculpe a pergunta, mas estou iniciando agora no mundo java.

Muito grato;

PS: Ja tentei usar o getImage e o read do ImageIO, tambem fiz procuras na net, mas somente encontrei códigos em VB-

Essa é a parte mais fácil =P
Vou colocar aqui um exemplo que eu uso no meu sistema:

/**
	 * Converte uma array de bytes de imagem na sua imagem correspondente.
	 * @param bytes : bytes da imagem.
	 * @return Retorna a imagem correspondente.
	 * 
	 * @author Zell Ruskea
	 * */
	public static Image byteToImage(byte[] bytes) {
		if(bytes == null) {
			return null;
		}else {
			return Toolkit.getDefaultToolkit().createImage(bytes);
		}
	}

Espero ter ajudado. Abraço! E feliz ano novo ai pra vocês o/

parabéns pelo post cara, que coisinha chata essa conversão, estava precisando serializar um array de imagens, na hora de armazenar tinha que se bytes e na hora de manipular tinhas que ser imageicon…

vlw, foi salvador esse post

abraço

parabéns pelo post cara, que coisinha chata essa conversão, estava precisando serializar um array de imagens, na hora de armazenar tinha que se bytes e na hora de manipular tinhas que ser imageicon…

vlw, foi salvador esse post

abraço

:thumbup: