7

Я могу открыть меньшие tifs без проблем, но эти tifs в 100+MB не могут быть открыты в Paint.NET. Я не думаю, что это проблема памяти, потому что другие программы могут открываться без проблем (IrfanView, XNViewPortable). Это ограничение программного обеспечения?

«Произошла неуказанная ошибка при открытии файла».

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

Я использую Paint.NET v3.5.5 (Final Release build 3.55.3767.28608) на XP SP3.

Обновить:

Я думаю, что ответ Джоэла Коухорна на правильном пути. Я преобразовал изображение в черно-белое, в результате чего размер файла чуть меньше 5 МБ. Затем попытался открыть и снова получил ошибку.

Используя оригинал, я перепробовал все виды вещей и в итоге понял, что если я уменьшу пиксели с 6000x6000 до 5000x5000, я смогу открыть изображение в Paint.NET (даже 24-битном цвете).

3 ответа3

4

Похоже, вы получаете исключение OutOfMemory. Исключение .Net OutOfMemory немного вводит в заблуждение. Чаще встречается это исключение, когда у вас заканчивается адресное пространство, которое немного отличается от физической памяти. Это означает, что такие вещи, как проверка диспетчера задач на предмет определения объема используемой памяти, могут не помочь вам отследить проблему.

Вместо этого проблема, скорее всего, является результатом ошибки в Paint.Net, из-за которой определенные части изображения помещаются средой выполнения .Net в нечто, называемое кучей больших объектов. Затем файл загружается таким образом, что один и тот же набор памяти создается и уничтожается несколько раз, возможно, так, что он каждый раз становится немного больше. Сборщик мусора не очень хорошо освобождает или уплотняет адресное пространство из кучи больших объектов (даже если физическая память была освобождена или выгружена), и внезапно вы получаете исключение OutOfMemory.

Решение заключается либо в том, чтобы Microsoft изменила поведение среды выполнения .Net по отношению к LOH, чтобы она могла входить и уплотнять LOH в определенных ситуациях (возможно, по запросу или до выдачи исключения OutOfMemory), либо для Программа Paint.Net исправляет способ загрузки файла таким образом, чтобы он правильно увеличивал размер существующей структуры данных, вызывающей проблему, а не создавал ее заново.

3

То, как файл хранится в памяти, влияет на то, сколько памяти ему требуется. Другие приложения могут быть более эффективными в использовании памяти.

Учитывая ваше описание, это действительно звучит так, как будто Paint.NET не хватает памяти. Вы можете попытаться открыть диспетчер задач при попытке открыть файл, чтобы увидеть, растет ли использование памяти.

3

возможно, он пытается выделить непрерывный блок памяти для чтения файла, попробуйте закрыть как можно больше приложений, а затем повторите попытку его открытия.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .