1

我想通过 TWAIN 接口获取扫描仪支持的文件格式。有一个示例如何获取支持的格式:

GetCapability(ICAP_IMAGEFILEFORMAT, unTest);
CString strType;
strType.Format("Type Supported %d\n", unTest);

但我想这里有问题,因为 ICAP_IMAGEFILEFORMAT 成员不是一个位掩码:

#define TWFF_TIFF        0    /* Tagged Image File Format     */
#define TWFF_PICT        1    /* Macintosh PICT               */
#define TWFF_BMP         2    /* Windows Bitmap               */
#define TWFF_XBM         3
#define TWFF_JFIF        4    /* JPEG File Interchange Format */
#define TWFF_FPX         5    /* Flash Pix                    */
...

因此,如果扫描仪支持 TIFF、PICT、BMP 和 JFIF,则不可能在一次调用中返回此类信息。

如何获取扫描仪支持的格式列表?

4

2 回答 2

1

我相信您必须查询 DS(例如尝试设置您想要的值)以查看您想要的格式是否受支持,然后根据结果您可以构建列表或支持的格式。我认为这就是 msgget 容器的方式,

TW_ONEVALUE -- 当前值和默认值一致的单个值。这种能力的可用值范围就是这个单一的值。例如,指示存在文档进纸器的能力可能属于这种类型。

并且来自规范 ICAP_IMAGEFILEFORMAT 部分的描述似乎暗示您只能设置为单个值,或取回单个值:

应用

使用此 ICAP 确定哪些格式可用于文件传输,并为其他能力协商设置上下文,例如 ICAP_COMPRESSION。请务必使用 DG_CONTROL / DAT_SETUPFILEXFER / MSG_SET 操作来指定用于特定采集的格式。

资源

如果不支持,则返回 TWRC_FAILURE / TWCC_CAPUNSUPPORTED。如果不支持 Operation,则返回 TWRC_FAILURE、TWCC_CAPBADOPERATION。(见 DG_CONTROL /DAT_CAPABILITY/MSG_QUERYSUPPORT)

无论如何,我可能会误解,但这就是我的感觉。

于 2011-10-03T16:10:24.337 回答
1

我认为在一次调用中获取所有支持的文件格式是可行的,因为“MSG_GET 容器”和“MSG_SET 容器”都支持 TW_ENUMERATION。

于 2011-10-20T08:00:56.630 回答