[RESOLVIDO] Criar uma imagem a partir de bytes

Pessoal eu preciso desenvolver um programa que crie uma imagem apartir de um arquivo binário. É assim: eu tenho uma matriz de 256 linhas e 3 colunas. Nessa matriz está definida minha paleta de cores (RGB). A seguir, eu tenho um vetor de tamanho igual ao da area dessa imagem (largura e altura) . Em cada indíce desse meu vetor, está o byte referente a paleta de cores. É mais ou menos isso, alguém pode me ajudar?

Uma imagem que usa uma paleta de cores é uma imagem indexada como gif,png pixmap.
O pixmap é muito simples. Dê uma lida:

O jeito mais rápido que conheço para executar tal tarefa usando a api padrão do Java é esse construtor:

BufferedImage(int width, int height, int imageType, IndexColorModel cm)

Claro que você precisa passar no parâmetro imageType o valor BufferedImage.TYPE_BYTE_INDEXED e você também precisa de um objeto do tipo IndexColorModel devidamente inicializado.
Recomendo muito fortemente que você estude sobre formatos de imagem e paletas de cores até que esses conceitos estejam devidamente sólidos para você.

Inté.

Então eu fiz assim:

            icm = new IndexColorModel(8,256,getR(),getG(),getB());
            bf =  new BufferedImage(mapWidth,mapHeight,BufferedImage.TYPE_BYTE_INDEXED,icm);
            wr = bf.getRaster();
            wr.setDataElements(0, 0,mapWidth,mapHeight,vMap);

Pq pelo código que vc passou em momento nenhum eu chamava o meu veotr q cotém os bytes do map ( no caso o vMap)
Só que eu não tô conseguindo ver se está certo, pois estou com dificuldade de mostrar o meu buffer em um JFrame…

[quote=oitathi]Então eu fiz assim:

            icm = new IndexColorModel(8,256,getR(),getG(),getB());
            bf =  new BufferedImage(mapWidth,mapHeight,BufferedImage.TYPE_BYTE_INDEXED,icm);
            wr = bf.getRaster();
            wr.setDataElements(0, 0,mapWidth,mapHeight,vMap);

Pq pelo código que vc passou em momento nenhum eu chamava o meu veotr q cotém os bytes do map ( no caso o vMap)
Só que eu não tô conseguindo ver se está certo, pois estou com dificuldade de mostrar o meu buffer em um JFrame…[/quote]
Talvez essa classe aqui sirva para tal:

public class MostradorBufferedImage extends Canvas
{
	private static final long serialVersionUID = 1L;
	private BufferedImage image;
	
	public MostradorBufferedImage()
	{
		
	}
	
	public void setImage(BufferedImage image)
	{
		this.image = image;
	}
	
	public void update(Graphics g)
	{
		if (image != null)
		{
			paint(g);
		}
		else
		{
			super.update(g);
		}
	}
	
	public void paint(Graphics g)
	{
		if (image != null)
		{
			g.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), this);
		}
		else
		{
			super.paint(g);
		}
	}
}

Inté.

Ah sim, eu criei um jlabel e coloquei dentro desse jlabel o meu buffer e dentro do meu frame o jlabel… hehehehe
Mas obrigadão!!!