Glr eu to usando um enum que guarda a stream de cada imagem respectivamente a um id, porém ele ta dando um certo erro na hora de gerar uma imagem, pois o que o código faz é isso aqui:
for(int i = 0; i <= mapa.getWidth()/tamanhoDosPisos; i++) {
for(int j = 0; j <= mapa.getHeight()/tamanhoDosPisos; j++) {
Random randomiza = new Random();
valor = randomiza.nextInt(materiais.length);
piso = ImageIO.read(materiais[valor].getStream());
System.out.println(valor);
System.out.println("x: " + i*tamanhoDosPisos + ", y: " + j*tamanhoDosPisos);
g.drawImage(piso,(i*tamanhoDosPisos),(j*tamanhoDosPisos), null);
}
}
ele gera um valor aleatório e então pega da classe Enum a stream referente a esse id, só que quando eu faço ImageIO,write(…) a imagem só fica toda preta com a penas uma ou duas das imagens desenhadas, aqui o resultado:
Mas depois q eu fui na pasta e abrir o arquivo, agr fica normal como deveria aparecer, mas quando gera pela primeira vez a img, a imagem não aparece na pasta antes da aplicação encerrar, então o arquivo não encontra a imagem.
na verdade, não tem problema que eu pegue o mesmo valor varias vezes, pois eu quero que ele repita mesmo as imagens, o problema é que pra carregar a imagem pela primeira vez, pelo o que estou vendo é ir direto na pasta e abrir a imagem uma vez, não entendo pq, além disso, se a imagem não existe, depois que o código cria o ImageIO.write() só cria a imagem depois que a aplicação encerra
Vc esta certo, o construtor do Random da um jeito nisso.
pode postar a parte relativa ao ImageIO.write, talvez vc esteja escondendo alguma exception ou não esteja fechando o arquivo (arquivos abertos precisam ser fechados, para ter certeza que todos os buffers foram esvaziados e o arquivo criado, alem disso existe outros problemas como file descriptor leak, etc)
Eu consegui com ajuda de um colega meu mas obg, tive que tirar os inputStream e usei classe File, mas o que eu acho q estava acontecendo pelo que eu analisei foi que, o código ele não tava realmente gerando o arquivo quando chegava na linha do ImageIO.write, ele só gerava depois de um tempo, então enquanto isso o código continuava e procurava o arquivo, mas como o ImageIO não tinha criado ainda, ele não encontrava, então dava o erro, a imagem gerava e a aplicação encerrava, provavelmente a inputstream que eu estava usando, devia ta impedindo de fechar o arquivo ou algo do tipo, mas como ja resolvi melhor ainda, rsrs