[RESUELTO] Insertar imagen desde... ¿Escaner?

Discute sobre las herramientas de la base de datos
Responder
Avatar de Usuario
Milor
Mensajes: 60
Registrado: Sab Ago 14, 2010 5:37 pm

[RESUELTO] Insertar imagen desde... ¿Escaner?

Mensaje por Milor »

Tengo un campo imagen en el formulario, no veo la manera de escanearlo y que lo guarde. ¿Solo puedo desde archivo? (En el menu editar, sale, multimedia y desde escaner, no lo puedo seleccionar)
Última edición por Milor el Jue Mar 02, 2017 7:59 pm, editado 1 vez en total.
LibreOffice 4.2.4.2 en Windows 7 y Ubuntu
El OLMO no da PERAS, usa los PROGRAMAS para lo que están DISEÑADOS
Te ofrecemos nuestro tiempo y ofreces tu tiempo, no lo desperdiciemos. Explicarse y Comprenderse es necesario.
Avatar de Usuario
Milor
Mensajes: 60
Registrado: Sab Ago 14, 2010 5:37 pm

Re: Insertar imagen desde... ¿Escaner?

Mensaje por Milor »

Aquí esta solucionado para windows, no es el mejor código del mundo (es más faltaría para detectar el path de la aplicación pero parece que en windows (supongo que se puede detectar en que SO se ejecuta y inicializarlo de una manera u otro pero no quería perder el tiempo con eso) con la barras tiene un problemas) pero funciona se usa un programa externo llamado imagemagick (también hay versión para linux) para hacer la conversión y luego se borra.

Código: Seleccionar todo

Sub AbrirEscanear(oEv)
   oWiaDialog = CreateObject("WIA.CommonDialog")
   oWiaDeviceManager = CreateObject("WIA.DeviceManager")
   lCount = oWiaDeviceManager.DeviceInfos.Count
   rutagc = "C:\Users\jarg1\Documents\GestionClientes\imagenes\"
   rutagcrelativa = "imagenes/"
   rutamagick = "C:\Program Files\ImageMagick-7.0.5-Q16\magick.exe"

'this lists the available devices, only one on my system (not necessary)
   For i = 1 to oWiaDeviceManager.DeviceInfos.Count
       dev = oWiaDeviceManager.DeviceInfos.item(i)
   
       sID = dev.DeviceID
       sName = dev.Properties.item("Name").Value
'       MsgBox sName & "; " & sID
      Next

		Dim Form As Object
		Dim Ctl As Object
		Form = ThisComponent.DrawPage.Forms.GetByIndex(0)
		Ctl = Form.getByName("txtDNI")		
		
	
	If (Ctl.text = "")  Then
		MsgBox "Introduce el DNI"
	Else
		oImageFileA = oWiaDialog.ShowAcquireImage
		oImageFileR = oWiaDialog.ShowAcquireImage
		If (IsNull(oImageFileA) or IsNull(oImageFileR)) Then
			MsgBox "Has cancelado el escaneo"
		Else			
			sExt = oImageFileA.FileExtension
	   		oImageFileA.SaveFile(rutagc & Ctl.text & "_1." & sExt)
	   		sExt2 = oImageFileA.FileExtension
	   		oImageFileR.SaveFile(rutagc & Ctl.text & "_2." & sExt2)
	   		Shell(rutamagick,0,rutagc & Ctl.text & "_1." & sExt & " " & rutagc & Ctl.text & "_1.png",true)
	   		Shell(rutamagick,0,rutagc & Ctl.text & "_2." & sExt & " " & rutagc & Ctl.text & "_2.png",true)
	   		Kill rutagc & Ctl.text & "_1." & sExt
	   		Kill rutagc & Ctl.text & "_2." & sExt
	   		Ctl2 = Form.getByName("imgANVERSO")
	   		Ctl2.ImageURL = rutagcrelativa & Ctl.text & "_1.png"
	   		Ctl2 = Form.getByName("imgREVERSO")
	   		Ctl2.ImageURL = rutagcrelativa & Ctl.text & "_2.png"
		End If		 
	End If
	
   


End Sub
Que hace?Al tocar el boton se ejecuta, el nnombre que esta en el campo de texto que se llama "txtDNI" se le pondrá ese nombre a las imagenes (captura dos el frontar y el reverson pon _1 y _2 respectivamente) el programa externo convierte le BMP capturado en PNG luego el BASIC lo borra.
LibreOffice 4.2.4.2 en Windows 7 y Ubuntu
El OLMO no da PERAS, usa los PROGRAMAS para lo que están DISEÑADOS
Te ofrecemos nuestro tiempo y ofreces tu tiempo, no lo desperdiciemos. Explicarse y Comprenderse es necesario.
Responder