Jun112010

WIA ile C# tan otomatik resim tarama

Published by admin at 11:24 PM under

 WIA ile scanner dan otomatik olarak resim tarama işlemi yapmak.
( bu örneğin çalışması için bir .net projesi acılır ve com referansı olarak microsoft windows image aq v2.0 eklenir. )

setItem(Item1, "6146", 1);    // tarama rengi özelliği  ( 1-4 arası bir değer verebilirsiniz)
setItem
(Item1, "6147", 150);  // yatay çözünürlük bilgisi DPI
setItem
(Item1, "6148", 150); // dikey çözünürlük bilgisi DPI
setItem
(Item1, "6151", 150 * 8.5); // yatay tarama bölgesi
setItem
(Item1, "6152", 150 * 11); // dikey tarama bölgesi
setItem(Item1, "4104", 24);  // resmin depth özelliği bilgisi. Eğer bunu set etmez isek bazı scannerlarda renkli tarama yapsak bile hep siyah-beyaz gelir.Özellikle Canon larda :), o yüzden set edilmelidir.

Örnek C# kodu :

    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); 
        setItem(Item1, "4104", 24); 

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

 



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Tags: ,

E-mail | Permalink | Trackback | Post RSSRSS comment feed 0 Responses