2009-06-28 11 views
6

काम नहीं कर रहा है मैं सी # कोड से रंग स्कैन स्कैन करने के लिए अपना कैनन पिक्स्मा एमपी 150 नहीं प्राप्त कर सकता। निम्नलिखित कोड के परिणामस्वरूप एक काले और सफेद छवि होती है, या यदि मैं 6146 से 2 के मान को बदलता हूं तो एक ग्रेस्केल छवि बनाई जाती है। मैं कोड से रंग स्कैन करने में सक्षम होना चाहता हूं। मुझे पता है स्कैनर रंग छवियों को करता है क्योंकि मैं "स्कैनर और कैमरा" में एक्सपी विज़ार्ड के माध्यम से एक कर सकता हूं। क्या कोई मुझे यह पता लगाने में मदद कर सकता है कि मैं रंग स्कैन के लिए कौन सा मूल्य निर्धारित नहीं कर रहा हूं। सभी दस्तावेज और उदाहरण मैं सिर्फ 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); 
    } 
+0

मूल रूप से WIA_IPS_CUR_INTENT = WIA_INTENT_IMAGE_TYPE_COLOR और WIA_IPA_DEPTH = 24 संदर्भ 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= बनाम.85) .aspx – JDPeckham

उत्तर

7

यदि कोई और सोच रहा है, तो आपको "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())); 
    } 
} 
+0

धन्यवाद! वह काम किया!!!! –

संबंधित मुद्दे