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);
}
Tags: wia, .net