Problema com imagens e memoria

Delphi

26/11/2004

Alguém sabe dizer se o TImage ou o TJPegImage tem alguma limitação de tamanho que eles suportam?

Estou com um problema sério de memória em relação a imagens e já tentei de tudo e não consigo resolver.

Tenho um programa que trabalha com imagens relativamente grandes (2 a 4MB). Abro elas de uma arquivo jpeg, converto pra bmp pra trabalhar com ela (normalmente de 2 a 4 imagens dessa são abertas simultanemante), então junto elas em uma outra, salvo e faço outros processamentos emcima dela.

A questão é que o programa está dando um mensagem de erro: ´Memoria insuficiente para armazenamento´. O erro não ocorre sempre no mesmo lugar, cada hora acontece quando estou executando uma coisa diferente.

Estou liberando a memoria corretamente e já não sei mais o que fazer.

Qualquer sugestão do que pode ser feito será bem-vinda.


Gabriela

Gabriela

Curtidas 0

Respostas

Massuda

Massuda

26/11/2004

Em qual versão do Windows você utiliza esse programa?

Você já observou se esse problema ocorre tanto nos Win9x com nos WinNT/2000/XP?

Alguns meses atrás eu estava trabalhando com conversão de mapas digitais de ruas e um dos problemas encontrados era que em máquinas com Win9x não era possível converter certos mapas por falta de memória; entretanto, máquinas com a mesma quantidade de memória física mas rodando Win2000 faziam a conversão sem problemas. A causa desse problema está relacionada a diferenças entre o gerenciador de memória do Win9x e do WinNT/2000/XP.


GOSTEI 0
Nerdex

Nerdex

26/11/2004

Estas 3 etapas podem resolver:

1. Evite esta conversão, pois não é necessária - deixe em BMP;

(Na boa...: acho insensato uma conversão de JPEG para BMP, pois JPEG é gerado com um algorítmo de compressão com perca de bits (qualidade). Já o inverso sim... é cabível...)(BMP é um ´sólido´ arquivo de mapa de bits)....Resumindo: vc tá dando um bom trabalho para o sistema desempenhar!!!

2. Gere um arquivo de recurso para esta imagem BMP;
3. Apartir do arquivo de recurso gere uma DLL contendo a imagem;

Cito que o 3ª etapa é a mais importante e interessante.
Desta forma, deixarás tua aplicação mais leve e com um ´ar´ mais profissional, além do mais o usuário não poderá ´furtar´ o arq. de imagem...
A receita para a criação do arquivo de recursos tem aqui no CDelphi, já a inclusão do recurso em uma DLL e sua chamada no aplicação, eu posso postar aqui se alguém desejar...


GOSTEI 0
Gabriela

Gabriela

26/11/2004

Massuda,
o windows que eu uso é o XP. E nem tenho como testar no 98. Mas como vc disse que ele é pior do que o XP nesse gerenciamento de memoria, nem resolveria.

Nerdex,
a conversão de jpeg para bmp se faz necessária pq a imagem em questão é aberta pelo usuário, ele escolhe uma imagem qualquer em jpeg no computador dele para abrir. E eu preciso trabalhar a imagem no formato mapa de bits. Então não vejo como não converter. A não ser que tenha como trabalhar pixel a pixel numa imagem jpeg.

E não entendi a idéia de colocar na dll. Ao que me parece isso seria se as imagens fossem sempre as mesmas, imagens do próprio programa, seria isso? Pq aí, no caso, não teria como ao usuário esclher a imagem para abrir eu colocar ela numa dll.

E mais uma dúvida, o que seria um arquivo de recurso?


GOSTEI 0
Gabriela

Gabriela

26/11/2004

pessoal, ninguém tem mais nenhuma solução de como posso resolver esse problema?

Preciso de uma solução logo!!!


GOSTEI 0
POSTAR