Какой кодек для быстрого сохранения растровых изображений в памяти

Я сохраняю большое количество памяти var = new MemoryStream (); растровое изображение . Сохранить ( память , ImageFormat . Png ); s (скриншоты) в память. Ничего особенного в коде, это тривиально:

Save()

Поскольку мой компьютер становится немного медленным, я запустил сеанс анализа производительности в Visual Studio, и выяснил, что Save()вызов занимает 37% «инклюзивных образцов». Другие большие части используются при сохранении на диске, поэтому эти 37% более вероятны на 80%, если не сохранять на диск. (На данный момент я не хочу сохранять на диск. Все данные хранятся в ОЗУ до тех пор, пока не будет нажата горячая клавиша, и я вряд ли буду иметь влияние на скорость на жестком диске.)

По моему Save()мнению , вызов должен преобразовать более или менее «необработанные» данные растрового изображения в сжатый формат файла PNG.

Интересно, имеет ли кто-нибудь обзор производительности различных форматов изображений относительно времени обработки метода. Я бы хотел выбрать самый быстрый формат, даже если размер файла больше.ImageFormat.MemoryBmp

Я пытался:

ArgumentNullException

но это бросает :GIF : ~5.5% CPU load TIFF: ~4.5% CPU load PNG : ~4.0% CPU load JPG : ~2.0% CPU load (note that this is lossy) BMP : ~1.0% CPU load

Значение не может быть нулевым. Имя параметра: encoder

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

c#,performance,bitmap,image-compression,

0

Ответов: 1


1

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

Graphics

Я также попытался интегрировать Magick.NET , но поскольку я не мог понять, как создать MagickImageобъект Bitmap, чтобы сохранить скриншот, мне пришлось использовать конструктор, который принимает Bitmapаргумент как аргумент. Это привело к загрузке процессора на 10,0% для изображений PNG.

C #, производительность, растровые, изображения сжатия,
Похожие вопросы