Alguém sabe uma maneira de criar thumbnails de uma forma que não utilize tanta memória, tenho uma pasta com 100 imagens, carrego as imagens originais e na hora de mostrar na tela desenho ela em tamanho menor, só que o fato de ter carregado a imagem original já ocupa memória, pra carregar as 100 imagens o programa está utilizando 170MB de memória, ouvi dizer que na hora de criar os thumbnails você tem que carregar a imagem com uma qualidade inferior à original para que não ocupe tanta memória, algo desse tipo, pesquisei sobre isso e não consegui encontrar nada de bom… se alguém tiver alguma dica já ajuda…
Alguém sabe uma maneira de criar thumbnails de uma forma que não utilize tanta memória, tenho uma pasta com 100 imagens, carrego as imagens originais e na hora de mostrar na tela desenho ela em tamanho menor, só que o fato de ter carregado a imagem original já ocupa memória, pra carregar as 100 imagens o programa está utilizando 170MB de memória, ouvi dizer que na hora de criar os thumbnails você tem que carregar a imagem com uma qualidade inferior à original para que não ocupe tanta memória, algo desse tipo, pesquisei sobre isso e não consegui encontrar nada de bom… se alguém tiver alguma dica já ajuda…
.[/quote]
O problema não é que sejam 100 imagens mas sim que vc mantem as 100 na memoria.
No fim do seu loop de processamento dos arquivos sempre faça o dispose da image e/ou dos graphics que estiver usando.
Isso liberta recursos. Só por segurança faça image= null; para ter a certeza.
Apenas uma imagens de cada vez precisa estar carregada.
Para a conversão use uma BufferedImage e AffineTransformation para fazer a redução de escala.
Depois de salvar a Bufferedimage para arquivo , faça dispose dela tb.
Alguém sabe uma maneira de criar thumbnails de uma forma que não utilize tanta memória, tenho uma pasta com 100 imagens, carrego as imagens originais e na hora de mostrar na tela desenho ela em tamanho menor, só que o fato de ter carregado a imagem original já ocupa memória, pra carregar as 100 imagens o programa está utilizando 170MB de memória, ouvi dizer que na hora de criar os thumbnails você tem que carregar a imagem com uma qualidade inferior à original para que não ocupe tanta memória, algo desse tipo, pesquisei sobre isso e não consegui encontrar nada de bom… se alguém tiver alguma dica já ajuda…
.[/quote]
O problema não é que sejam 100 imagens mas sim que vc mantem as 100 na memoria.
No fim do seu loop de processamento dos arquivos sempre faça o dispose da image e/ou dos graphics que estiver usando.
Isso liberta recursos. Só por segurança faça image= null; para ter a certeza.
Apenas uma imagens de cada vez precisa estar carregada.
Para a conversão use uma BufferedImage e AffineTransformation para fazer a redução de escala.
Depois de salvar a Bufferedimage para arquivo , faça dispose dela tb.[/quote]
o problema é que não estou salvando em arquivo as imagens em tamanhos menores, eu quero mostrar na tela e quando o cara clicar na imagem pequena eu mostro ela em tamanho real, fiz o teste colocando null em alguns objetos que eu carreguei e que não vou precisar mais, só que não deu muita diferença naum, o problema é mesmo que as 100 imagens estão carregadas ao mesmo tempo, se tivesse um jeito de já carregar as imagens em tamanho reduzido talvez diminuiria a memória… mas de qualquer forma valeu pela dica…
Se o seu programa é um especie de galeria carregue apenas as imagens que o usuário pode ver (paginação)
Outra opção é pintar as imagens individuais e reduzidas em uma imagem única e depois apenas mover esta imagem com scroll.
Teriamos uma imagem maior mas apenas um. Image consome muitos recursos e mantém uma ´serie de objetos agregados. Podemos diminuir isso com uma unica imagem. É claro que para isso dar certo o componente de navegação tem que ser bem mais inteligente porque terá que simular que são imagens individuias, quando na realidade não são.