2009-06-28 9 views
6

Ich kann meine Canon Pixma MP150 nicht zum Scannen eines Farbscans aus C# -Code. Der folgende Code führt zu einem Schwarzweißbild, oder wenn ich den Wert 6146 zu 2 ändere, wird ein Graustufenbild erstellt. Ich hätte gerne einen Farbscan vom Code. Ich weiß, dass der Scanner Farbbilder erzeugt, weil ich einen über den XP-Assistenten in "Scanner und Kamera" machen kann. Kann mir jemand helfen, herauszufinden, welchen Wert ich nicht für einen Farbscan einstelle. Alle Dokumentation und Beispiele, die ich finden kann, sagen nur, um den Wert von 6146 zu ändern.WIA-Automatisierung für Scanner Farbabstimmung funktioniert nicht

Vielen Dank, dass Sie sich die Zeit nehmen, dies zu lesen!

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); 
    } 
+0

Grundsätzlich WIA_IPS_CUR_INTENT = WIA_INTENT_IMAGE_TYPE_COLOR und WIA_IPA_DEPTH = 24 Referenz https: // msdn.microsoft.com/en-us/library/windows/desktop/ms630190(v=vs.85).aspx https://msdn.microsoft.com/en-us/library/windows/desktop/ms630194(v= vs.85) .aspx – JDPeckham

Antwort

7

Falls jemand anderes sich fragt, müssen Sie auch "4104" einstellen. Standardmäßig war es auf 1 Bit Tiefe eingestellt. Das hat den Trick für mich gemacht.

setItem(Item1, "4104", 24);

Um dies heraus zu finden, hatte ich alle Eigenschaften aufzuzählen und sehen, was sie gesetzt waren:

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())); 
    } 
} 
+0

Danke! Das hat funktioniert!!!! –

Verwandte Themen