与图像处理筛选器集成

基于流的数据传输允许轻松将 WIA 图像处理筛选器与 WIA 驱动程序集成,因为该流由调用方提供,并且无论目标流是什么,WIA 驱动程序都采取相同的操作。 也就是说,驱动程序只需请求流,然后写入该流,而不管将哪种类型的流返回到驱动程序。

实现 IStream 需要 WIA 图像处理筛选器。 创建此筛选器时,会为其提供应用程序的目标流,然后它应委托 (或转发) 其调用。 换句话说,在筛选器上调用 IStream::Write 时,它应处理缓冲区,然后使用已处理缓冲区对目标流调用 IStream::Write

同样,图像处理筛选器可以为驱动程序提供流,以便可以将数据从驱动程序写入到图像处理筛选器,然后图像处理筛选器写入应用程序的目标流。 请注意,如果没有筛选器,驱动程序不会更改,而是继续写入流。

下图以图形形式显示了这种情况。 第一个图演示了不使用图像处理筛选器时基于流的数据传输。

说明不使用图像处理筛选器的 istream 传输的示意图。

第二个图演示了使用图像处理筛选器时基于流的数据传输。

说明使用图像处理筛选器进行 istream 传输的示意图。

请注意,驱动程序的行为不会更改;无论流是由图像处理筛选器还是由应用程序直接提供,驱动程序都接收流并写入该流。 因此,可以单独发布增值图像处理组件。 例如,你可以提供一个内置驱动程序,该驱动程序正常运行,但在用户从 CD 安装映像处理组件时可以提供更高质量的映像。 在这种情况下,无需更改驱动程序。

Microsoft Windows SDK文档中介绍了 IStream 接口及其方法。