Попытка создать приложение для получения изображений, оптимизированное для быстрого сканера (которое может обеспечить до 6 сжатых изображений [цветной + серый + двоичный] [передний + задний] для каждой бумаги со скоростью 150 стр / мин) I есть некоторые проблемы со скоростью.
Используя технологию TWAIN и режим передачи в буфер памяти (TWSX_MEMORY), я получаю буфер изображения (как файл JPEG или TIFF, загруженный в память) со сканера и сохраняю его в папке назначения моего приложения.
Если я не хочу создавать миниатюры, мое приложение не вызывает потери скорости для сканера, но если я хочу, благодаря тому, как я это делаю (сохранение буфера в файл в моей C ++ TWAIN-обработке dll, уведомление моего хост-приложения .NET с указанием пути к целевому файлу с использованием указателя на функцию, открытием файла изображения в C # и созданием миниатюрного изображения) мое приложение вызывает резкое снижение скорости сканирования.
Я попробовал некоторые оптимизации, такие как выполнение фазы загрузки в отдельном потоке и отправка буфера файлов неуправляемых изображений на хост .NET и попытка загрузить его в небезопасном контексте (UnmanagedMemoryStream) и создание эскиза. Но это не улучшило скорость значительно. Итак, мой вопрос:
Имея в памяти буфер файла изображения (например, сжатый 24-битный JPEG без миниатюры с вложением), существует ли быстрый прямой способ создания из него миниатюрного изображения? Что вы предлагаете как самый быстрый способ создания миниатюр в этом случае?