Existe um limite de tamanho de arquivo no Paint.NET

7

Eu posso abrir pequenos tifs sem problema, mas esses tifs em 100 + MB não podem ser abertos no Paint.NET. Não acho que seja problema de memória, porque outro software pode ser aberto sem problemas (IrfanView, XNViewPortable). Esta é uma limitação de software?

"Ocorreu um erro não especificado ao abrir o arquivo."

http://dl.dropbox.com/u/1156285/PaintDotCrash_OpenBifTif.avi

Estou usando o Paint.NET v3.5.5 (versão final de compilação 3.55.3767.28608) no XP SP3.

Atualizar:

eu acho que Joel Coehoorn A resposta está no caminho certo. Eu converti a imagem para preto / branco, resultando em um tamanho de arquivo de pouco menos de 5MB. Em seguida, tentou abrir e recebeu o erro novamente.

Usando o original, eu tentei todos os tipos de coisas e, eventualmente, descobri que, se eu reduzisse os pixels de 6000x6000 para 5000x5000, eu poderia abrir a imagem no Paint.NET (até 24 bits de cor).

Jay Cummins
fonte
Você deve enviar a Rick Brewster (desenvolvedor do paint.net) um relatório de bug.
akid
Na verdade, encontrei a explicação de Rick Brewster: goo.gl/ddV3 É um recurso conhecido (ou bug).
Jay Cummins

Respostas:

4

Parece que você está recebendo uma exceção OutOfMemory. A exceção .Net OutOfMemory é um pouco enganosa. É muito mais comum ver essa exceção quando você fica sem espaço de endereçamento , o que é um pouco diferente da memória física. Isso significa que coisas como verificar o gerenciador de tarefas para ver quanta memória é usada podem não ajudar a rastrear o problema.

Em vez disso, o problema é provavelmente o resultado de um bug no Paint.Net, de modo que certas partes da imagem são colocadas pelo tempo de execução .Net em algo chamado o heap de objetos grandes. O arquivo é então carregado de tal maneira que esse mesmo conjunto de memória é criado e destruído várias vezes, talvez de tal forma que fique um pouco maior a cada vez. O coletor de lixo não libera muito bem o espaço de endereço do Large Object Heap (mesmo que a memória física tenha sido liberada ou paginada) e, de repente, você obtém uma exceção OutOfMemory.

A solução é para a Microsoft alterar o comportamento do tempo de execução do .Net em relação ao LOH, de modo que ele possa compactar o LOH em determinadas situações (talvez sob solicitação ou antes de lançar a exceção OutOfMemory) ou para o Programa Paint.Net para corrigir a maneira como ele carrega o arquivo, de modo que ele cresça corretamente, seja qual for a estrutura de dados existente, causando o problema, em vez de recriá-lo repetidas vezes.

Joel Coehoorn
fonte
1
Acho que esta mensagem no fórum Paint.NET descreve o que está acontecendo: goo.gl/ddV3
Jay Cummins
@Jay - essa é uma boa maneira de ver isso. Eu não tenho certeza se isso é exatamente seu problema, no entanto, como seu problema é mais consistente: você nunca pode carregar a imagem, enquanto o link que você postou descreve uma situação em que você poderia carregá-la com êxito, mas somente se for a primeira imagem aberta após a inicialização Paint.Net.
Joel Coehoorn
3

A maneira como um arquivo como esse é armazenado na memória afeta a quantidade de memória necessária. Os outros aplicativos podem ser mais eficientes em termos de memória.

Dada a sua descrição, realmente parece que o Paint.NET está sem memória. Você pode tentar abrir o Gerenciador de Tarefas ao tentar abrir o arquivo para ver se o uso de memória aumenta.

Daniel Beck
fonte
Boa sugestão. Eu verifiquei e a memória não muda. O erro ocorre instantaneamente - quase como se o Paint.NET não estivesse tentando abrir o arquivo.
Jay Cummins
btw, quando eu recebo 15 rep, eu vou marcar com +1 esta resposta.
Jay Cummins
3

talvez esteja tentando alocar um bloco de memória contíguo para ler o arquivo, tente fechar o máximo de aplicativos possível e tente abrir novamente.

Mohamed
fonte
Eu tentei isso ontem, mas isso não parece ser o problema.
Jay Cummins