底片扫描仪的基本扫描

WIA 应用程序枚举扫描程序项树中的顶级项,以确定扫描程序支持的功能。 然后,应用程序使用顶级项作为扫描源。 例如,平板扫描仪项目用于从平板扫描,而送纸器项用于从文档馈送器扫描。

胶片项的编程和扫描行为与平板项目的编程和扫描行为几乎完全相同。

应用程序在对扫描仪的胶片项进行程序程序时通常会执行以下操作,但不一定按以下顺序执行:

  • 枚举顶级 WIA 项,搜索使用 WiaItemTypeProgrammableDataSource 项标志和 WIA_CATEGORY_FILM WIA_IPA_ITEM_CATEGORY 设置标记的 WIA 项。

  • 读取WIA_IPS_FILM_SCAN_MODE的有效值,以检查胶片扫描设置。 此设置将指示正图像或负图像 (即照片底片) 扫描支持。

  • 通过设置 WIA_IPS_FILM_SCAN_MODE 属性选择正光源或负光源。

  • 读取扫描仪灯的当前设置,并根据需要使用 WIA_IPS_LAMP 属性打开灯, (如果支持) 。

  • 读取 WIA_IPA_TYMEDWIA_IPA_FORMAT的有效值。

  • 通过设置 WIA_IPA_FORMAT 属性,选择数据的最终格式。

  • 选择图像设置,例如 WIA_IPA_DEPTHWIA_IPA_DATATYPEWIA_IPA_BITS_PER_CHANNEL

  • 如果支持) 文件传输,请通过设置 WIA_IPA_TYMED 属性,选择单页或多页 (。

  • 枚举子项以查找现有帧。

  • 读取 WIA_IPS_SUPPORTS_CHILD_ITEM_CREATION 项以确定扫描仪是否支持创建新帧。

  • 根据帧创建支持) (调整现有胶片项帧或创建新帧。

  • 阅读WIA_IPS_SUPPORTS_CHILD_ITEM_CREATION属性以确定胶片扫描仪项目是否支持特殊的文件夹获取功能。

  • 执行以下操作之一:

    • 使用 WIA 胶片扫描仪项目传输数据 (不使用文件夹获取功能) 。 全片扫描区域将作为单个图像返回。
    • 使用 WIA 胶片扫描仪项目 () 文件夹获取功能传输数据。 只有 WIA 胶片扫描仪子项 ((即帧) )传输到应用程序。
    • 导航到每个帧项并传输该 WIA 项。

驱动程序通常使用扫描仪的胶片扫描单元进行扫描时执行以下操作:

  1. 调用 IWiaMiniDrv::d rvValidateItemPropertiesIWiaMiniDrv::d rvReadItemProperties。 WIA 驱动程序应在应用程序的属性设置阶段验证任何属性设置。

  2. 调用 IWiaMiniDrv::d rvWriteItemProperties。 传入的 WIA 项上下文属于胶片扫描仪项目或胶片扫描项帧,以便驱动程序知道应用程序打算使用扫描仪的胶片扫描单元进行扫描。 一些扫描仪使用平板进行胶片扫描。 必须根据WIA_IPS_FILM_SCAN_MODE属性) 和胶片扫描的范围更改,为扫描仪配置适当的照明 (。

  3. 调用 IWiaMiniDrv::d rvAcquireItemData。 传入的 WIA 项上下文属于胶片扫描仪项或胶片扫描项帧。 驱动程序可以轻松确定应用程序打算使用胶片扫描单元进行扫描。

  4. 使用当前胶片项属性 (包括任何子帧属性) ,对设备进行编程并从胶片扫描单元进行扫描。 如果 WIA 驱动程序未处于胶片扫描模式,它将尝试切换到此模式进行扫描。 应用程序只能在负光和正光之间切换。 使用胶片扫描仪项目进行扫描是应用程序和驱动程序之间的协定;他们同意扫描仪的胶片扫描功能将用于数据传输。

驱动程序应将位于胶片扫描仪项目上的 WIA 属性用作扫描前应用于扫描仪的胶片扫描部分的设置。 WIA 应用程序需要始终信任 WIA 驱动程序返回的数据的标头。 例如,扫描程序已确定无法扫描指定的图像宽度,并且需要对值进行舍入。 驱动程序应使用更新的宽度信息更新图像标头,以便应用程序具有适当的数据。 WIA 驱动程序应始终使用从设备返回的实际数据信息更新 WIA 属性集。