garfieldzf Ответов: 1

Как загрузить большой файл с помощью GDI+


У меня есть большой файл .tiff,около 2,2 г, я хочу изменить его на png или jpg в C#/GDI+,но когда я загружаю его,он выдает "параметр действителен","размеры массива превысили поддерживаемый диапазон".

Что я уже пробовал:

Я пробую это так:

byte[] buffer = null;
using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
{
    buffer = new byte[fs.Length];
    fs.Read(buffer, 0, (int)fs.Length);
}


.. или вот так:

FileStream pngStream = new FileStream(file, FileMode.Open, FileAccess.Read);
var image = new Bitmap(pngStream)

1 Ответов

Рейтинг:
8

OriginalGriff

Ты не можешь: Создание объекта сопоставления файлов - приложения Windows | Microsoft Docs[^]

Цитата:
Размер объекта сопоставления файлов, поддерживаемого именованным файлом, ограничен дисковым пространством. Размер представления файла ограничен самым большим доступным непрерывным блоком неограниченной виртуальной памяти. Это самое большее 2 ГБ минус виртуальная память, уже зарезервированная процессом.
А поскольку ваши tiff-файлы превышают этот показатель, а tiff-это сжатый формат, вы вообще не можете использовать GDI+ для загрузки этого файла.