@justslipknot
Если есть способ создать полотно большого размера для размещения картинок на нём, то готов рассмотреть другой способ.
Что я пробовал: прописывал gcallowverylargeobjects = true
Приложение: Консоль, .NET 6 (пробовал и .NET 5)
Компьютер мощный, ОЗУ должно хватать точно (64гб)
Решения вопроса 0
Ответы на вопрос 1
@vabka
Хранить в куче такой большой объект тоже не следует, тк он 100% попадёт в LOH
+ в .NET есть ограничение в 2гб на объекты в управляемой куче.
Описанное вами изображение как раз в этот лимит и не влезет.
Остаётся два с половиной варианта:
1. Делить огромное изображение на чанки по меньше (либо по пикселям, либо по каналам, либо и так и так)
2. Хранить изображение в неуправляемой памяти, выделять и освобождать память вручную.
В .net 6 как раз добавили Native alloc API для этого.
3. Возможно есть какая-нибудь нативная библиотека для работы с большими изображениями.
Возможно даже уже есть обёртка для работы с ней.
Во всех случаях придётся отказаться от Bitmap и использовать другие подходы
без доп. библиотек и массива битмапов
Не получится