Converter BYTE[] para IMAGE

Bom dia,

No código abaixo eu consigo converter um IMAGE em um array de bytes BYTE[].
Porém estou com problemas para convertê-lo novamente em IMAGE a partir de um array de bytes.

Alguem sabe uma maneira de fazer isso?

private byte[] imageToByte(Image image) {   
      int size = image.getHeight() * image.getWidth();   
      int[] imgRgbData = new int[size];   
      byte[] imageData = null;   
      try {   
          ByteArrayOutputStream baos = new ByteArrayOutputStream();   
          DataOutputStream dos = new DataOutputStream(baos);   
          try {   
              image.getRGB(imgRgbData, 0, image.getWidth(), 0, 0, image.getWidth(), image.getHeight());   
              for (int i = 0; i < imgRgbData.length; i++) {   
                  dos.writeByte(imgRgbData[i]);   
              }   
              imageData = baos.toByteArray();   
          } finally {   
              baos.close();   
              dos.close();   
          }   
      } catch (IOException ex) {   
          ex.printStackTrace();   
      }   
      return imageData;   
  } 

seria isto?

Toolkit.getDefaultToolkit().createImage(imagemOriginal);

onde imagemOriginal é o seu vetor de bytes

qual é a biblioteca para usar esse Toolkit.getDefaultToolkit()?

Aqui no meu projeto deu “cannot find symbol”

import java.awt.Toolkit

Hahaha…é cada uma…

E gilson…não aprende mesmo…

Como eu recrio essa imagem a partir de um array de bytes?

lembrando que estou utilizando a edição jme…

Não entendi o seu comentário boone. poderia se explicar melhor?

desculpe…não tinha visto que era JME…foi mal

sem problemas.

leonvian nunca programei em JME, mas como nosso amigo boone não se prontificou em ajudar…

tente dar uma olhada neste endereço.
http://www.java2s.com/Code/Java/J2ME/ImageLoader.htm
atente para a linha

abraços

Vou dar uma olhada.
Brigadão pelo link.

avise se der certo ok?

Vamo la galera…vamos tentar procurar na documentação da api antes de postar dúvidas…

dá uma olhada nesse link:

http://java.sun.com/javame/reference/apis/jsr118/

Classe Image…

Image.createImage(byte[], 0, byte[].length);

Ah… acho que o meu metodo pra transformar a IMAGE em um BYTE[] apesar de estar retornando um byte deve estar errado.
Tentei essas metodos pra recriar a imagem mas não deu certo.

Sempre acontece alguma Exception.

gilson, finalmente percebeste a caquinha.

leonvian, o array esperado por createImage não é qualquer array e sim um no formato especificado no javadoc (de novo !..este javadoc é completo mesmo hein…) da classe Image,método createImage.

[quote=leonvian]Ah… acho que o meu metodo pra transformar a IMAGE em um BYTE[] apesar de estar retornando um byte deve estar errado.
Tentei essas metodos pra recriar a imagem mas não deu certo.

Sempre acontece alguma Exception.[/quote]

Como vc está fazendo?
E qual exception é lançada?

quando eu tento assim: Image.createImage(byte[], 0, byte[].length); aparece um IlegalArgumentException
quando eu tento assim: Image.createImage(inputStream); aparece um IOException

Assim é feita a transformação de imagem para byte.

 private byte[] imageToByte(Image image) {
        int size = image.getHeight() * image.getWidth();
        int[] imgRgbData = new int[size];
        byte[] imageData = null;
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            DataOutputStream dos = new DataOutputStream(baos);
            try {
                image.getRGB(imgRgbData, 0, image.getWidth(), 0, 0, image.getWidth(), image.getHeight());
                for (int i = 0; i < imgRgbData.length; i++) {
                    dos.writeByte(imgRgbData[i]);
                }
                imageData = baos.toByteArray();
            } finally {
                baos.close();
                dos.close();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return imageData;
    }

[quote=leonvian]quando eu tento assim: Image.createImage(byte[], 0, byte[].length); aparece um IlegalArgumentException
quando eu tento assim: Image.createImage(inputStream); aparece um IOException

Assim é feita a transformação de imagem para byte.

private byte[] imageToByte(Image image) { int size = image.getHeight() * image.getWidth(); int[] imgRgbData = new int[size]; byte[] imageData = null; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); try { image.getRGB(imgRgbData, 0, image.getWidth(), 0, 0, image.getWidth(), image.getHeight()); for (int i = 0; i < imgRgbData.length; i++) { dos.writeByte(imgRgbData[i]); } imageData = baos.toByteArray(); } finally { baos.close(); dos.close(); } } catch (IOException ex) { ex.printStackTrace(); } return imageData; } [/quote]

Cara, vc não está fazendo exatamente assim né?
Image.createImage(byte[], 0, byte[].length);

Pq esse byte[] tem que ser o retorno desse teu método…

Pois é… isso eu sei.

É tipo byte[] byte = imageToByte(image);

Image.createImage(byte[], 0, byte[].length);