WIA扫描仪,无法获取/设置4104和6146属性(颜色,色深)

3

我正在尝试在C#项目中使用WIA配置Kodak i2600扫描仪的颜色和深度。多篇文章提到参数6146(可以取值1(彩色),2(灰度)或4(黑白))和4104(颜色深度= 24)。

WIA自动化扫描仪颜色意图未起作用

Windows图像获取-在C#中设置设备属性

使用WIA检测所有可用的扫描仪分辨率

当我迭代扫描仪属性数组时,这些属性不会出现。

我使用foreach循环来迭代属性,以下是我得到的列表:

  • 3112: 用户名: *******
  • 4098: 项目名称: 根
  • 4099: 完整项目名称: 0000 \ 根
  • 4101: 项目标志: 76
  • 2: 唯一设备ID: {613DD1FC6 - 810E- 1100 - 13EC7- 0800213E2092F} \ 0000
  • 3: 制造商: 柯达
  • 4: 描述: KODAK i2600扫描仪
  • 5: 类型: 65537
  • 6: 端口: \ AUsbscan0
  • 7: 名称: KODAK i2600扫描仪
  • 8: 服务器: 本地
  • 9: 远程设备ID:
  • 10: Ul Class ID: {40131AD10 - 3391 - 11D2- 9A33- 00C04FA36145}
  • 11: 硬件配置: 0
  • 12: 8audRate:
  • 13: STI通用功能: 49
  • 14: WIA版本: 2.0
  • 15: 驱动程序版本: 1.1.0.0
  • 16: PnP ID字符串: usb=vid 040a&pid 601d=0000000000000000={6bddlfc6- 810f- 11d0- bec7- 0800 2be2092f}
  • 17: STI驱动程序版本: 3
  • 4125: 项目类别: {F193526F- 5988- 4A26- 9888- E16E4F97CE10}
  • 1026: 固件版本: 0
  • 3086: 文档处理功能: 8229
  • 3087: 文档处理状态: 5
  • 3095: 最大扫描时间: 3600000
  • 3090: 水平光学分辨率: 600
  • 3091: 垂直光学分辨率: 600
  • 3103: 显示预览控件: 0
  • 3098: 页面宽度: 8500
  • 3099: 页面高度: 14000
  • 3096: 页数: 0
  • 3076: 水平纸张进纸尺寸: 8500
  • 3077: 垂直纸张进纸尺寸: 14000
  • 3088: 文档处理选择: 1
  • 3078: 纸张进纸器注册: 1
  • 3104: 最小水平纸张进纸尺寸: 1000
  • 3105: 最小垂直纸张进纸尺寸: 1000
  • 3100: 预览: 0
扫描仪驱动程序已更新。

你能分享一下引用这些属性的链接吗? - Mark Hall
我已经添加了一些链接,这些链接指向这些属性。谢谢。 - Mariano G
1个回答

4

我是同样遇到了问题(柯达i2400扫描仪)的用户。

如果您愿意,可以尝试以下方法:

WIA.Item item = device.Items[1] as WIA.Item;

AdjustScannerSettings(item, 150, 0, 0, 1250, 1700, 0, 0, 1);


private static void AdjustScannerSettings(IItem scannnerItem, int scanResolutionDPI, int scanStartLeftPixel, int scanStartTopPixel,
        int scanWidthPixels, int scanHeightPixels, int brightnessPercents, int contrastPercents, int colorMode)
{
    const string WIA_SCAN_COLOR_MODE = "6146";
    const string WIA_HORIZONTAL_SCAN_RESOLUTION_DPI = "6147";
    const string WIA_VERTICAL_SCAN_RESOLUTION_DPI = "6148";
    const string WIA_HORIZONTAL_SCAN_START_PIXEL = "6149";
    const string WIA_VERTICAL_SCAN_START_PIXEL = "6150";
    const string WIA_HORIZONTAL_SCAN_SIZE_PIXELS = "6151";
    const string WIA_VERTICAL_SCAN_SIZE_PIXELS = "6152";
    const string WIA_SCAN_BRIGHTNESS_PERCENTS = "6154";
    const string WIA_SCAN_CONTRAST_PERCENTS = "6155";

    SetWIAProperty(scannnerItem.Properties, WIA_HORIZONTAL_SCAN_RESOLUTION_DPI, scanResolutionDPI);
    SetWIAProperty(scannnerItem.Properties, WIA_VERTICAL_SCAN_RESOLUTION_DPI, scanResolutionDPI);
    SetWIAProperty(scannnerItem.Properties, WIA_HORIZONTAL_SCAN_START_PIXEL, scanStartLeftPixel);
    SetWIAProperty(scannnerItem.Properties, WIA_VERTICAL_SCAN_START_PIXEL, scanStartTopPixel);
    SetWIAProperty(scannnerItem.Properties, WIA_HORIZONTAL_SCAN_SIZE_PIXELS, scanWidthPixels);
    SetWIAProperty(scannnerItem.Properties, WIA_VERTICAL_SCAN_SIZE_PIXELS, scanHeightPixels);
    SetWIAProperty(scannnerItem.Properties, WIA_SCAN_BRIGHTNESS_PERCENTS, brightnessPercents);
    SetWIAProperty(scannnerItem.Properties, WIA_SCAN_CONTRAST_PERCENTS, contrastPercents);
    SetWIAProperty(scannnerItem.Properties, WIA_SCAN_COLOR_MODE, colorMode);
}

private static void SetWIAProperty(IProperties properties, object propName, object propValue)
{
    Property prop = properties.get_Item(ref propName);
    prop.set_Value(ref propValue);
}

太好了!有了你的代码,我可以设置颜色。但是我仍然卡在颜色深度配置上。你有什么想法吗? - Mariano G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接