尝试创建一个针对快速扫描仪优化的图像采集应用程序(它可以为每张纸以 150 ppm 的速度提供多达 6 个压缩图像 [彩色+灰色+二进制][正面+背面])我遇到了一些速度问题。使用 TWAIN 技术和内存缓冲区传输模式 (TWSX_MEMORY) 我从扫描仪接收图像缓冲区(作为内存中加载的 JPEG 或 TIFF 文件)并将其保存到我的应用程序目标路径。如果我不想创建缩略图,我的应用程序不会导致扫描仪的速度损失,但如果我愿意,由于我这样做的方式(将缓冲区保存到我的 C++ TWAIN 处理 dll 中的文件中,通知我的 .NET 主机应用程序使用函数指针的目标文件路径,在 C# 中打开图像文件并创建缩略图),我的应用程序会导致扫描速度的极端速度损失。我尝试了一些优化,例如在单独的线程中执行加载阶段并将非托管图像文件缓冲区发送到 .NET 主机并尝试在不安全的上下文 (UnmanagedMemoryStream) 中加载它并创建缩略图。但它并没有显着提高速度。所以我的问题是:
在内存中有一个图像文件缓冲区(例如,没有嵌入缩略图的 24 位 JPEG 压缩),是否有一种快速直接的方法可以从中创建缩略图图像?在这种情况下,您建议使用什么作为创建缩略图的最快方法?