JME - Transformar byte[] em 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;
    }

Da uma olhada nos metodos da classe javax.imageio.ImageIO

O mais difícil você já fez…
pra converter de byte[] pra Image é bem mais simples:

byte[] foto = ...;
Image imgFoto = new ImageIcon(foto).getImage();

Tente isso
Imagem

[code]
input = SUAVARIAVEL.getBinaryStream();
if (input != null) {
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] rb = new byte[1024];
int ch = 0;
while ((ch = input.read(rb)) != -1) {
output.write(rb, 0, ch);
}
byte[] b = output.toByteArray();
input.close();
output.close();
Image img = Toolkit.getDefaultToolkit().createImage(b);
if (img != null) {
Icon Icone = (new ImageIcon(img.getScaledInstance(418, 241, WIDTH)));
}

        }[/code]

hummm deu certo não.

input = SUAVARIAVEL.getBinaryStream(); Colocou sua imagem no local de Suavariavel ??

Voce quer exibir a imagem num label ??
Label.setImage(img);??

[quote=erico_kl]O mais difícil você já fez…
pra converter de byte[] pra Image é bem mais simples:

byte[] foto = ...; Image imgFoto = new ImageIcon(foto).getImage(); [/quote]
tu fez isso?

Lembrando que estamos programando para dispositivos móveis.
Não temos todos os recursos das outras edições.

Image imgFoto = new ImageIcon(foto).getImage();

Aqui deu problema no ImageIcon, apareceu um “cannot find Symbol”


Nesse código:

input = SUAVARIAVEL.getBinaryStream();
if (input != null) {
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] rb = new byte[1024];
int ch = 0;
while ((ch = input.read(rb)) != -1) {
output.write(rb, 0, ch);
}
byte[] b = output.toByteArray();
input.close();
output.close();
Image img = Toolkit.getDefaultToolkit().createImage(b);
if (img != null) {
Icon Icone = (new ImageIcon(img.getScaledInstance(418, 241, WIDTH)));
}

esse “input” seria um objeto de InputStream?
O “Icon” tambem não foi reconhecido, o netbeans me fez a sugestão de criar essa classe.

Eu fiz uma aplicação em canvas similar ao paint, em jme, consigo desenhar e salvar como array de bytes agora pretendo reabrir a imagem.

Obrigado pela ajuda.

Desculpa.
Agora que eu vi que tinha uma área no forum especifica para jme.

Essa variavel Icon ta errada… foi mal… Mas é assim

No lugar se criar esse ICon vc seta sua imagem no Label Então…
LabelImagem.setIcon(new ImageIcon(img.getScaledInstance(X, Y, WIDTH)));

Defina o X e o Y

e sim… é InputStream