Загрузка изображения
От: SanyaVB  
Дата: 30.05.13 14:49
Оценка:
Подскажите пожалуйста, как используя WPF можно загрузить и отобразить PNG файл высокого разрешения (21600x21600). размер его 120 МБ. При открытии IrfanView в памяти разворачивается в 1335МБ. У меня свободной оперативной памяти более 12 гектаров.
Как я выше писал, что редактором этот файл открывается, а вот BitmapImage оказался умнее всех и говорит: "Недостаточно памяти для продолжения выполнения программы."

Буду благодарен за помощь.
Re: Загрузка изображения
От: SanyaVB  
Дата: 31.05.13 03:31
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Подскажите пожалуйста, как используя WPF можно загрузить и отобразить PNG файл высокого разрешения (21600x21600). размер его 120 МБ. При открытии IrfanView в памяти разворачивается в 1335МБ. У меня свободной оперативной памяти более 12 гектаров.

SVB>Как я выше писал, что редактором этот файл открывается, а вот BitmapImage оказался умнее всех и говорит: "Недостаточно памяти для продолжения выполнения программы."

SVB>Буду благодарен за помощь.


Нашел причину. Нужно было собирать под платформу x64. Странно... для x86 доступно 3.5ГБ, а ему не хватило этого на распаковку...
Re[2]: Загрузка изображения
От: Codechanger Россия  
Дата: 31.05.13 07:03
Оценка: -1
Здравствуйте, SanyaVB, Вы писали:

SVB>Здравствуйте, SanyaVB, Вы писали:


SVB>>Подскажите пожалуйста, как используя WPF можно загрузить и отобразить PNG файл высокого разрешения (21600x21600). размер его 120 МБ. При открытии IrfanView в памяти разворачивается в 1335МБ. У меня свободной оперативной памяти более 12 гектаров.

SVB>>Как я выше писал, что редактором этот файл открывается, а вот BitmapImage оказался умнее всех и говорит: "Недостаточно памяти для продолжения выполнения программы."

SVB>>Буду благодарен за помощь.


SVB>Нашел причину. Нужно было собирать под платформу x64. Странно... для x86 доступно 3.5ГБ, а ему не хватило этого на распаковку...


Считать надо немного не так. 2гб на процесс, из них надо непрерывным куском выделить 1,3 гб, что весьма вероятно, что и не получится.
Re[2]: Загрузка изображения
От: vit_as Россия  
Дата: 31.05.13 07:05
Оценка: -1
Здравствуйте, SanyaVB, Вы писали:

SVB>Здравствуйте, SanyaVB, Вы писали:


SVB>>Подскажите пожалуйста, как используя WPF можно загрузить и отобразить PNG файл высокого разрешения (21600x21600). размер его 120 МБ. При открытии IrfanView в памяти разворачивается в 1335МБ. У меня свободной оперативной памяти более 12 гектаров.

SVB>>Как я выше писал, что редактором этот файл открывается, а вот BitmapImage оказался умнее всех и говорит: "Недостаточно памяти для продолжения выполнения программы."

SVB>>Буду благодарен за помощь.


SVB>Нашел причину. Нужно было собирать под платформу x64. Странно... для x86 доступно 3.5ГБ, а ему не хватило этого на распаковку...


Для приложений x86 доступно 2 Гб адресного пространства...
На практике .net приложение начинает затыкаться при загруженности 1.3 — 1.6 Гб, потому-что затруднительно становится выделить непрерывный кусок памяти в Large Object Heap из-за ее фрагментированности.

Для открытия таких больших картинок можно поискать библиотеки для "кусочного" и "разномасштабного" чтения png, чтобы не загружать память и ресурсы.
Re[3]: Загрузка изображения
От: Time Россия  
Дата: 11.06.13 14:53
Оценка:
Здравствуйте, vit_as.

в CLR via C# Jeffrey Richter пишет, что в .Net в x86 для объекта можно выделить максимум 1,5 ГБ. Также это подтверждается здесь
Re[3]: Загрузка изображения
От: Abyx Россия  
Дата: 11.06.13 15:51
Оценка: -1
Здравствуйте, Codechanger, Вы писали:

SVB>>Нашел причину. Нужно было собирать под платформу x64. Странно... для x86 доступно 3.5ГБ, а ему не хватило этого на распаковку...


C>Считать надо немного не так. 2гб на процесс.

в x64 ОС — 4Гб.
In Zen We Trust
Re[4]: Загрузка изображения
От: vit_as Россия  
Дата: 12.06.13 09:09
Оценка:
Здравствуйте, Abyx, Вы писали:

A>Здравствуйте, Codechanger, Вы писали:


SVB>>>Нашел причину. Нужно было собирать под платформу x64. Странно... для x86 доступно 3.5ГБ, а ему не хватило этого на распаковку...


C>>Считать надо немного не так. 2гб на процесс.

A>в x64 ОС — 4Гб.

В x64 ОС приложение x86 также падает на 1.5 гб выделенной памяти.

Если процесс собран как x64, то ограничение уже зависит от аппаратных ограничений машины. В моем приложении я свободно выделял объекты на 16 гб памяти.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.