Cerca

C# – Acquisire le immagini da Scanner utilizzando il Microsoft Windows Image Acquisition Library v2.0 [WIA]

Indice Articolo

Ultimi articoli pubblicati

Tra le varie cose nuove fatte ultimamente, ho dovuto anche scrivere un metodo che acquisisce le immagini da scanner. Per l’interfacciamento con uno scanner non professionale i metodi sono 2, o si utilizzano i driver TWAIN installati con lo scanner oppure utilizzare il componente Microsoft Windows Image Acquisition Library v2.0 (brevemente WIA). Il metodo più semplice e veloce è l’utilizzo di questo componente che di default dovrebbe essere installato in tutte le macchine Windows XP (ma lo trovate anche in altri sistemi operativi – io il test l’ho fatto su una macchina con Windows 7 a 64 bit), ma se no lo potete scaricare e registrare da questo LINK.

Una volta registrato il componente con il comando regsvr32 (ricordate che questo è un COM quindi non può essere utilizzato da programmi che girano con il target CPU a x64), potete referenziarlo sul vostro progetto sotto la scheda COM (Vedi immagine sotto):

Una volta referenziato potete importarlo nel progetto scrivendo:

Using WIA;

Il metodo di acquisizione vuole in ingresso delle costanti per specificargli il formato del file in uscita, e le possibilità sono:

  • TIFF
  • JPEG
  • PNG
  • BMP
  • GIF

Adesso andiamo a scrivere al inizio della nostra classe le 5 costanti:

const string WIABMP = “{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}“;
const string WIAPNG = “{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}“;
const string WIAGIF = “{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}“;
const string WIAJPEG = “{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}“;
const string WIATIFF = “{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}“;

Nella vostra funzione di Scansione mi immagino che in input vorrete il formato del immagine scansionata ed il path completo del file da salvare, quindi andiamo a sviluppare il codice per l’acquisizione delle immagini da scanner:

ImageFile image = null;
WIA.CommonDialog dialog = new WIA.CommonDialog();
switch (OutFormat.ToUpper())
{
case “PNG”:
image = dialog.ShowAcquireImage(WiaDeviceType.ScannerDeviceType,WiaImageIntent.ColorIntent,WiaImageBias.MinimizeSize, WIAPNG , false, true,false);
break;
case “GIF”:
image = dialog.ShowAcquireImage(WiaDeviceType.ScannerDeviceType,WiaImageIntent.ColorIntent,WiaImageBias.MinimizeSize, WIAGIF , false, true,false);
break;
case “JPEG”:
image = dialog.ShowAcquireImage(WiaDeviceType.ScannerDeviceType,WiaImageIntent.ColorIntent,WiaImageBias.MinimizeSize, WIAJPEG , false, true,false);
break;
case “BMP”:
image = dialog.ShowAcquireImage(WiaDeviceType.ScannerDeviceType,WiaImageIntent.ColorIntent,WiaImageBias.MinimizeSize, WIABMP, false, true,false);
break;
case “TIFF”:
image = dialog.ShowAcquireImage(WiaDeviceType.ScannerDeviceType,WiaImageIntent.ColorIntent,WiaImageBias.MinimizeSize, WIATIFF , false, true,false);
break;
}
image.SaveFile(OutFile);

I parametri del metodo ShowAcquireImage sono:

  • DeviceType – Enum per scegliere il device di acquisizione. Tra le opzioni abbiamo: scanner, camera, video e altro.
  • Intent – Possibilità di fare una acquisizione a colori, bianco e nero, text  e altro ancora
  • Bias – Indicare la qualità della immagine in output (da questa poi dipende la grandezza del file)
  • Format – Usare una delle costanti dichiarate prima per impostare il formato in output
  • AlwaysSelectDevice – Impostare a True se volete far apparire sempre la maschera di selezione scanner
  • UseCommonUI – Impostare a True se volete far apparire sempre la maschera di seleziona proprietà delle scansione
  • CancelError – Impostare a True se non volete permettere al componente di fare il throw delle eccezioni, false diversamente

Questo metodo ritorna un tipo ImageFile che può essere utilizzato per salvare poi il file sul disco tramite il metodo SaveFile.

Direi che questo è tutto. Diciamo che questo è un modo molto semplice e veloce per acquisire le immagini da Scanner. Che ne pensate?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

6 + 4 =