oDialogo=createobject("WIA.CommonDialog")
oScanner=createobject("WIA.DeviceManager")
dScanner=oDialogo.ShowSelectDevice(0, .t., .f.)
*----- Tipo de Escanner
IF dScanner.Properties.Exists("3088")=.T.
lcTipoScan="DUPLEX"
dScanner.Properties("3088").Value=33 && o 4 segun el modelo de escaner
dScanner.Properties("3096").Value=1
ELSE
lcTipoScan="FLATBED"
ENDIF
*----- Formato BMP el estandar
formatoBMP="{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"
*----- Cantidad de Hojas a Escanear (lo escribo manualmente por ahora
lnv = 2
FOR X = 1 TO lnv
*----- Escanear con la barra de progreso
Img=oDialogo.ShowTransfer(dScanner.items(1), FormatoBMP, .T.)
IF lcTipoScan="DUPLEX"
Img2=oDialogo.ShowTransfer(dScanner.items(1), FormatoBMP, .T.)
ENDIF
IF ISNULL(Img)
MESSAGEBOX('NO SE REALIZO EL ESCANEO')
EXIT
ENDIF
*----- Guardamos en archivo de imagen temporal
cBMP = RIGHT(SYS(2015), 8) + ".bmp"
ERASE (cBMP)
Img.SaveFile(cBMP)
IF lcTipoScan="DUPLEX"
cBMP2 = RIGHT(SYS(2015), 8) + ".bmp"
Img2.SaveFile(cBMP2)
ENDIF
*----- Convertimos con mi clase personal a JPG y luego a Blob, Sintaxis: Archivo, Formato, Calidad.
cJPG = THIS.Wia_imagen1.Setformato(cBMP, "JPG", 60)
cBlob = FILETOSTR(cJPG)
*----- Creamos la miniatura del JPG y pasamos a Blob
cJPG = THIS.Wia_Imagen1.SetComprimir(cJPG, 90, 120)
mBlob = FILETOSTR(cJPG)
*----- Cargamos imagen a cursor, se crea si no existe cursor
IF !USED("CUR_TEMP")
THIS.Grilla1.Preservar()
CREATE CURSOR CUR_TEMP (PAGINA N(10), MINIATURA W, IMAGEN W)
THIS.Grilla1.Restaurar("CUR_TEMP")
ENDIF
nPagina = RECCOUNT("CUR_TEMP") + 1
INSERT INTO CUR_TEMP (PAGINA, MINIATURA, IMAGEN) VALUES (nPagina, mBlob, cBlob)
THIS.SetImagenGrande()
*------ Borramos archivos de imagenes creados al escanear
ERASE (cBMP)
ERASE (cJPG)
IF X<lnv
IF MESSAGEBOX("DESEA ESCANEAR LA SIGUIENTE PAGINA", 4+32+0, "CONTINUAR")=7
EXIT
ENDIF
ENDIF
ENDFOR