用于扫描仪颜色意图的WIA Automation无法正常工作

我无法让我的Canon Pixma MP150从c#代码扫描彩色扫描。 以下代码生成黑白图像,或者如果我将6146的值更改为2,则会创建灰度图像。 我希望能够从代码中进行彩色扫描。 我知道扫描仪会对彩色图像进行彩色处理,因为我可以通过“扫描仪和相机”中的xp向导执行此操作。 任何人都可以帮我弄清楚我没有为彩色扫描设置什么值。 我可以找到的所有文档和示例都只是为了更改6146的值。

感谢您抽出时间来阅读!

private void ScanAndSaveOnePage () { WIA.CommonDialog Dialog1 = new WIA.CommonDialogClass(); WIA.DeviceManager DeviceManager1 = new WIA.DeviceManagerClass(); System.Object Object1 = null; System.Object Object2 = null; WIA.Device Scanner = null; Scanner = Dialog1.ShowSelectDevice(WIA.WiaDeviceType.ScannerDeviceType, false, false); WIA.Item Item1 = Scanner.Items[1]; setItem(Item1, "6146", 1); setItem(Item1, "6147", 150); setItem(Item1, "6148", 150); setItem(Item1, "6151", 150 * 8.5); setItem(Item1, "6152", 150 * 11); WIA.ImageFile Image1 = new WIA.ImageFile(); WIA.ImageProcess ImageProcess1 = new WIA.ImageProcess(); Object1 = (Object)"Convert"; ImageProcess1.Filters.Add(ImageProcess1.FilterInfos.get_Item(ref Object1).FilterID, 0); Object1 = (Object)"FormatID"; Object2 = (Object)WIA.FormatID.wiaFormatBMP; ImageProcess1.Filters[1].Properties.get_Item(ref Object1).set_Value(ref Object2); Object1 = null; Object2 = null; Image1 = (WIA.ImageFile)Item1.Transfer(WIA.FormatID.wiaFormatBMP); string DestImagePath = @"C:\test.bmp"; File.Delete(DestImagePath); Image1.SaveFile(DestImagePath); } private void setItem (IItem item, object property, object value) { WIA.Property aProperty = item.Properties.get_Item(ref property); aProperty.set_Value(ref value); } 

如果其他人想知道,你也必须设置“4104”。 默认情况下,它设置为1位深度。 这对我有用。

setItem(Item1, "4104", 24);

为了找到这个,我必须枚举所有属性并查看它们的设置:

 foreach (Property propertyItem in item.Properties) { if (!propertyItem.IsReadOnly) { Console.WriteLine(String.Format("{0}\t{1}\t{2}", propertyItem.Name, propertyItem.PropertyID, propertyItem.get_Value())); } }