2009-06-28 23 views
6

Canon Pixma MP150 cihazımı C# kodundan renkli bir tarama taraması yapamıyorum. Aşağıdaki kod, siyah beyaz bir görüntüyle sonuçlanır veya 6146 değerini 2 olarak değiştirirseniz, gri tonlamalı bir görüntü oluşturulur. Koddan renk taraması yapabilmek istiyorum. Tarayıcının renkli görüntüleri olduğunu biliyorum çünkü "tarayıcılarda ve kameralarda" xp sihirbazında bir tane yapabilirim. Birisi, renk taraması için hangi değeri ayarlamama karar vermeme yardımcı olabilir. Tüm belgeler ve örnekler sadece 6146 değerini değiştirmek için şunu söyleyebilirim:Tarayıcı renk amacıyla WIA Otomasyonu çalışmıyor

Bunu okumak için zaman ayırdığınız için teşekkür ederiz!

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

Temelde WIA_IPS_CUR_INTENT = WIA_INTENT_IMAGE_TYPE_COLOR ve WIA_IPA_DEPTH = 24 Referans 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

cevap

7

Başka birinin merak etmesi durumunda, "4104" ü de ayarlamanız gerekir. Varsayılan olarak 1 bit derinliğe ayarlandı. Bu benim için hile yaptı.

setItem(Item1, "4104", 24);

bu öğrenmek için, tüm özellikleri numaralandırmak ve onlar için ayarlanmış görmek zorunda:

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

Teşekkürler! İşe yaradı!!!! –

İlgili konular