【问题标题】:How to check image formats supported by scanner?如何检查扫描仪支持的图像格式?
【发布时间】:2011-08-31 05:32:54
【问题描述】:

我想通过 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,则不可能在一次调用中返回此类信息。

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

【问题讨论】:

    标签: c++ winapi twain


    【解决方案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)

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 是的,你是对的。为了返回枚举值,我必须深入研究 GetCapability 实现。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 2010-09-19
      • 2011-02-07
      相关资源
      最近更新 更多