如何检查扫描仪支持的图像格式?

时间:2011-08-31 05:32:54

标签: c++ winapi twain

我想通过TWAIN界面获得扫描仪支持的文件格式。有example如何获得支持的格式:

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在一次通话中无法返回此类信息。

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

2 个答案:

答案 0 :(得分:1)

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

TW_ONEVALUE - 当前值和默认值为的单个值 一致。此类型的可用值范围 能力就是这个单一的价值。例如,a 表示文档存在的功能 馈线可以是这种类型。

并且规范中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)

无论如何,我可能会误解,但这对我来说似乎是这样。

答案 1 :(得分:1)

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