Me gustaría saber, si vd. Es tan amable y lo conoce, que tengo que hacer para escanear fotos carnet en un escáner. He conseguido escanear pero me lo hace a tamaño A4. ¿Cómo controlo el tamaño?. Estoy intentando incluir una foto carnet para una base de datos de alumnos.
1 respuesta
Respuesta de denciso
1
1
denciso, Soy una persona multifacética, tanto manejo la informática,...
Con access no lo he visto, pero quizás en la siguiente liga: http://www.planetsourcecode.com/vb Localices algo, ahí existe una rutina para visual basic 6.
Ante todo gracias. He consultado el enlace pero la verdad... me pierdo puesto que hay mucha información. ¿Podría indicarme dónde está la rutina exactamente?. Gracias
Gracias David. En principio he solucionado el problema utilizando el commonDialog y seleccionando el área a escanear. Pero el problema que tengo es el siguiente. Cuando escaneo una foto y paso a la ficha siguiente para escanear otra me sale "ERROR 2145320848: NoImageFile loades. You must call Loadfile first". Tengo que cerrar la base de datos y volver a entrar para que me deje escanear otra y así. Esta es la secuencia de código que he puesto: Option Compare Database Option Explicit Dim CommonDialog1 As Object Dim Img As Object, Imagen As Object 'As Image Dim IP, IP1 'As New ImageProcess Dim Scaner As Object Dim PrimeraHoja As Boolean, NumeroHojas As Integer Dim gl_double As Double, gl_cadena As String, gl_codigo As String Const wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}" Private Sub Proceso_Escaner() Dim MiPath As String '* creamos el objeto escaner y la imagen contenedora Set CommonDialog1 = CreateObject("WIA.CommonDialog") Set Imagen = CreateObject("WIA.imagefile") '* On Error GoTo Err_Escanear_Click EtiquetaProceso: '* Lo primero nos aseguramos que no exista la imagen Call Proceso_Borrar_Fichero '* capturamos imagen Set Img = CommonDialog1.ShowAcquireImage 'Configure scanner settings '* la convertimos aJPEG If Img.FormatID <> wiaFormatJPEG Then Set IP = CreateObject("Wia.ImageProcess") IP.Filters.Add IP.FilterInfos("Convert").FilterID IP.Filters(1).Properties("FormatID").Value = wiaFormatJPEG Set Img = IP.Apply(Img) Set IP = Nothing End If '* si es la primera hoja la asignamos a la imagen contenedora If PrimeraHoja = False Then PrimeraHoja = True Set Imagen = Img NumeroHojas = 1 End If '** Salvamos el fichero Imagen.SaveFile ("C:\fotos alumnos\" & Me.APELLIDOS & ".jpg") Me.RutaFoto = "C:\fotos alumnos\" & Me.APELLIDOS & ".jpg" '** Comprobamos el tamaño, para evitar los errores de seleccion. Si es menor de 100 Kb pasa, si es mayor preguntamos gl_double = TamañoArchivo("C:\fotos alumnos\" & Me.APELLIDOS & ".jpg") If gl_double > NumeroHojas * 100 Then If MsgBox("El archivo tiene " & gl_double & " Kb" & vbCrLf & vbCrLf & "¿ Volvemos a escanear ?", vbQuestion + vbYesNo + vbDefaultButton1, "El chino dice...") = vbYes Then GoTo EtiquetaProceso End If End If '* anulamos objetos y salimos Etiqueta_Salir: Set Imagen = Nothing Set CommonDialog1 = Nothing Exit Sub Err_Escanear_Click: If Err.Number = 91 Then 'El usuario cancela la acción Resume Etiqueta_Salir Else MsgBox "Error " & Err.Number & ": " & Err.Description End If End Sub Private Sub Proceso_Borrar_Fichero() '** borramos el archivo (por siaca) On Error Resume Next Kill ("C:\fotos alumnos\" & Me.APELLIDOS & ".jpg") On Error GoTo 0 End Sub Public Function TamañoArchivo(strRuta As String) As Single Dim fso As Object, Archivo As Object Set fso = CreateObject("Scripting.FileSystemObject") '* comprobamos que el archivo exista, si no existe devolvemos 0 If Len(Dir(strRuta)) > 0 Then Set Archivo = fso.GetFile(strRuta) '* devolvemos el tamaño en Kb TamañoArchivo = Round(Archivo.Size / 1024, "0") Else TamañoArchivo = 0 End If Set Archivo = Nothing Set fso = Nothing End Function Private Sub ESCANEAR_FOTO_Click() Call Proceso_Escaner End Sub ¿Cómo puedo solucionarlo?. Muchas gracias
Sugiero desactivar el control del commondialog y volver a crearlo cuando se necesite, de otra forma todo lo demás lo veo bien...