Problemas con Imagenes

133 vues
Accéder directement au premier message non lu

grupo...@hbaron.com

non lue,
28 sept. 2012, 06:49:4428/09/2012
à mundovis...@googlegroups.com

Tengo este problema, quizas me puedan ayudar,

 con estos comandos logro ir a traer una foto y colocarlo en un control de imagen, primero guardo el nombre del archivo en una variable y posteriormente convierto ese archivo en string y lo guardo en una propiedad de la forma (thisform.foto), posteriormente esa propiedad se la asigno a la pripoiedad pictureval de el control imagen.  Esto me funciona bien

STORE GETFILE() TO A
STORE FILETOSTR(A) TO THISFORM.FOTO
THISFORM.IMAGEN.PICTUREVAL=THISFORM.FOTO
THISFORM.Refresh


Pero yo quiero guardar esa foto en un campo memo, y no quiero usar otro tipo de campo ya que quiero usar una tabla la cual es accesada por programas viejos hechos en Foxpro 2.5, entonces hago esto

Empiezo igual que antes
STORE GETFILE() TO A
STORE FILETOSTR(A) TO THISFORM.FOTO

Tomo la Tabla
SELECT FOTOTABL

Inserto en la tabla la propiedad de la forma en un campo memo, el cual se llama FOTOMEMO
INSERT INTO FOTOTABL (FOTOMEMO) VALUES (THISFORM.FOTO)

Y Relaciono el control imagen con este memo
THISFORM.IMAGEN.PICTUREVAL=FOTOTABL.FOTOMEMO
THISFORM.Refresh

El problema es que la foto me sale deformada.  Porque ocurre esto, pierdo informacion al guardarlo en el campo memo?


De antemano Gracias

Gerardo

grupo...@hbaron.com

non lue,
28 sept. 2012, 07:34:1028/09/2012
à mundovis...@googlegroups.com
Ya lo resolvi solo tenia que escribir SET NOCPTRANS TO FOTOMEMO  y ya.

Otra Pregunta, alguno de ustedes sabe como poder tomar fotos desde una forma de VFP con una camera conectada al USB.?

Gracias

Gerardo



----- Original Message -----

To:
<mundovis...@googlegroups.com>
Cc:

Sent:
Fri, 28 Sep 2012 05:49:44 -0500
Subject:
[Mundo Visual FoxPro] Problemas con Imagenes




Tengo este problema, quizas me puedan ayudar,

 con estos comandos logro ir a traer una foto y colocarlo en un control de imagen, primero guardo el nombre del archivo en una variable y posteriormente convierto ese archivo en string y lo guardo en una propiedad de la forma (thisform.foto), posteriormente esa propiedad se la asigno a la pripoiedad pictureval de el control imagen.  Esto me funciona bien

STORE GETFILE() TO A
STORE FILETOSTR(A) TO THISFORMFOTO

THISFORM.IMAGEN.PICTUREVAL=THISFORM.FOTO
THISFORM.Refresh


Pero yo quiero guardar esa foto en un campo memo, y no quiero usar otro tipo de campo ya que quiero usar una tabla la cual es accesada por programas viejos hechos en Foxpro 2.5, entonces hago esto

Empiezo igual que antes
STORE GETFILE() TO A
STORE FILETOSTR(A) TO THISFORM.FOTO

Tomo la Tabla
SELECT FOTOTABL

Inserto en la tabla la propiedad de la forma en un campo memo, el cual se llama FOTOMEMO
INSERT INTO FOTOTABL (FOTOMEMO) VALUES (THISFORM.FOTO)

Y Relaciono el control imagen con este memo
THISFORM.IMAGEN.PICTUREVAL=FOTOTABL.FOTOMEMO
THISFORM.Refresh

El problema es que la foto me sale deformada.  Porque ocurre esto, pierdo informacion al guardarlo en el campo memo?


De antemano Gracias

Gerardo

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfoxpro+unsub...@googlegroups.com
 
 

José Luis Díaz

non lue,
28 sept. 2012, 10:00:1028/09/2012
à mundovis...@googlegroups.com
Mira este enlace

http://fox.wikis.com/wc.dll?Wiki~VideoCaptureApi

Quizá te pueda ayudar


Saludos


JOSÉ LUIS DÍAZ
Leticia, Amazonas, Colombia


El 28/09/12, grupo...@hbaron.com <grupo...@hbaron.com> escribió:
> Ya lo resolvi solo tenia que escribir SET NOCPTRANS TO FOTOMEMO  y
> ya.
>
> Otra Pregunta, alguno de ustedes sabe como poder tomar fotos desde
> una forma de VFP con una camera conectada al USB.?
>
> Gracias
>
> Gerardo
>
> ----- Original Message -----
> From: mundovis...@googlegroups.com
> To:
> Cc:
> Sent:Fri, 28 Sep 2012 05:49:44 -0500
> Subject:[Mundo Visual FoxPro] Problemas con Imagenes
>
> Tengo este problema, quizas me puedan ayudar,
>
>  con estos comandos logro ir a traer una foto y colocarlo en un
> control de imagen, primero guardo el nombre del archivo en una
> variable y posteriormente convierto ese archivo en string y lo guardo
> en una propiedad de la forma (thisform.foto) [1], posteriormente esa
> propiedad se la asigno a la pripoiedad pictureval de el control
> imagen.  Esto me funciona bien
>
> STORE GETFILE() TO A
> STORE FILETOSTR(A) TO THISFORM.FOTO [2]
> THISFORM.IMAGENPICTUREVAL=THISFORM.FOTO [3]
> THISFORM.Refresh [4]
>
> Pero yo quiero guardar esa foto en un campo memo, y no quiero usar
> otro tipo de campo ya que quiero usar una tabla la cual es accesada
> por programas viejos hechos en Foxpro 2.5, entonces hago esto
>
> Empiezo igual que antes
> STORE GETFILE() TO A
> STORE FILETOSTR(A) TO THISFORM.FOTO [5]
>
> Tomo la Tabla
> SELECT FOTOTABL
>
> Inserto en la tabla la propiedad de la forma en un campo memo, el
> cual se llama FOTOMEMO
> INSERT INTO FOTOTABL (FOTOMEMO) VALUES (THISFORM.FOTO) [6]
>
> Y Relaciono el control imagen con este memo
> THISFORM.IMAGEN.PICTUREVAL=FOTOTABL.FOTOMEMO [7]
> THISFORM.Refresh [8]
>
> El problema es que la foto me sale deformada.  Porque ocurre esto,
> pierdo informacion al guardarlo en el campo memo?
>
> De antemano Gracias
>
> Gerardo
>
> --
> _______________________________________________________________
> Has recibido este mensaje porque estás suscrito al Grupo "Mundo
> Visual
> FoxPro" de Grupos de Google.
>
> Para anular la suscripción a este grupo, envía un mensaje a:
> mundovisualfox...@googlegroups.com [9]
>
>
>
>
> Links:
> ------
> [1] http://sitemail.hostway.com/http:
> [2] http://THISFORM.FOTO
> [3] http://sitemail.hostway.com/http:
> [4] http://THISFORM.Refresh
> [5] http://THISFORM.FOTO
> [6] http://sitemail.hostway.com/http:
> [7] http://sitemail.hostway.com/http:
> [8] http://THISFORM.Refresh
> [9] mailto:unsub...@googlegroups.com
>
> --
> _______________________________________________________________
> Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
> FoxPro" de Grupos de Google.
>
> Para anular la suscripción a este grupo, envía un mensaje a:
> mundovisualfox...@googlegroups.com
>
>
>

José Luis Díaz

non lue,
28 sept. 2012, 10:08:3428/09/2012
à mundovis...@googlegroups.com
También encontré este correo que envió el compañero Edgar Acevedo:



1- Descarga el archivo adjunto (GETFOTO.TXT) en una carpeta de tu
disco que se llame "literalmente" así:

C:\GETFOTO

2- Renombra el archivo GETFOTO.TXT por GETFOTO.ZIP. Descomprime el
GETFOTO.ZIP

3- Tendrás ahora 5 archivos:

GETFOTO.PRG
GETFOTO.FXP
GETFOTO.SCX
GETFOTO.SCT
GETFOTO.H

4- Entra a visual fox y teclea DO C:\GETFOTO\GETFOTO.PRG

5- Si el programa detectó alguna cámara "compatible" te aparecerá un
cuadro negro a la izquierda.

6- Dale click al botón "Enfocar" para activar la cámara Web y centrar
tu objetivo.

7- Dale click al botón "Tomar Foto" para tomar "congelar" el frame
actual y guardarlo en un archivo.

8- Dale guardar y salir y te indicará el nombre del archivo (con todo
y ruta) donde guardó tu foto.

CONSIDERACIÓN MUY IMPORTANTE:
=============================
Es posible que debido a la configuración "default" de la cámara Web
que estés usando, el recuadro de enfoque sea menor que el tamaño del
frame "congelado" del cual se obtiene la foto. Por ello posiblemente
tendrás que "recortar" la foto. Para ello, en el programa principal
GETFOTO.PRG Encontrarás un procedure para recortar la foto. Tal vez
lo llegues a necesitar.

Saludo2,



Edgar Acevedo
getfoto.TXT

Jorge Benitez

non lue,
28 sept. 2012, 21:50:0128/09/2012
à mundovis...@googlegroups.com
El ejemplo GETFOTO que envio Edgar Acevedo y que muy amablemente compartio el amigo Jose Luis Diaz esta muy bueno para tomar una foto. Tocandolo un poco se lo puede incorporar a cualquier formulario. El unico problema que no encuentro como resolver es que la imagen que muestra la camara (no la que guarda) es muy grande y ocupa mucho espacio en un formulario que tiene varios datos. Alguien sabe como hacerla mas pequeña ?. Desde ya gracias

edgar suarez kummers

non lue,
28 sept. 2012, 22:05:3928/09/2012
à mundovis...@googlegroups.com
Mira por favor en las propiedades del form donde se incorpora la foto, hay una opción que permite que la foto llene el espacio. No la recuerdo ahora mismo, pero hice algo parecido, creo que las opciones son tres. Una de ellas tiene la palabra sketch (me puede fallar la memoria).


edgar suarez kummers

grupo...@hbaron.com

non lue,
28 sept. 2012, 22:47:5128/09/2012
à mundovis...@googlegroups.com
Yo ocupe el ejemplo de WikiLeaks que me envio Edgard y funciona excelente mañana te lo envio.
Correo electronico enviado utilizando BlackBerry de Movistar

From: Jorge Benitez <matr...@gmail.com>
Date: Fri, 28 Sep 2012 22:50:01 -0300
Subject: Re: [Mundo Visual FoxPro] Problemas con Imagenes

Efrain

non lue,
16 mai 2013, 16:36:0316/05/2013
à mundovis...@googlegroups.com,grupo...@hbaron.com
Hola Amigos Foxeros

Baje el ejemplo y me funciona bien en VFP9.0 Windows 7 Home premiun 64 pero cada vez que se llama al formulario me muestra la lista de dispositivos disponibles para seleccionar, lo que quiero saber es como hago para identificar el dispositivo que es seleccionado, para guardarlo y en las posteriores llamadas al formulario hacer referencia a ese dispositivo y que el usuario no tenga que seleccionar la cámara 

Gracias por la ayuda prestada

Saludos

Efrain 

efh...@gmail.com

non lue,
17 mai 2013, 15:11:3717/05/2013
à mundovis...@googlegroups.com
Hola Amigos Foxeros, espero me puedan ayudar con esto
 
Baje el ejemplo que esta en el foro de como capturar fotos desde la webcam pero tengo varias inquietudes
 
1. Al ejecutar el programa me pide seleccionar la cámara que deseo utilizar, como puedo saber cual es el dispositivo seleccionado para guardarlo y que en las próximas ejecuciones me seleccione esa cámara automáticamente
 
2. En ocasiones al ejecutar el programa no me muestra la lista de dispositivos y  genera el error que la cámara no esta disponible es como si otro programa la tiene en uso, como puede hacer que se libere automáticamente para que pueda ser utilizada por mi programa
 
Abajo dejo el código utilizado
 
Gracias por la ayuda
 
saludos
 
Efraín
 
 
LOCAL oForm
oForm = CREATEOBJECT("Tform")
oForm.Show(1)
* end of main
 
DEFINE CLASS Tform As Form
    #DEFINE WM_CAP_START 0x0400
    #DEFINE WM_CAP_DRIVER_CONNECT (WM_CAP_START+10)
    #DEFINE WM_CAP_DRIVER_DISCONNECT (WM_CAP_START+11)
    #DEFINE WM_CAP_DRIVER_GET_CAPS (WM_CAP_START+14)
    #DEFINE WM_CAP_SET_PREVIEW (WM_CAP_START+50)
    #DEFINE WM_CAP_SET_OVERLAY (WM_CAP_START+51)
    #DEFINE WM_CAP_SET_PREVIEWRATE (WM_CAP_START+52)
    #DEFINE WM_CAP_GET_STATUS (WM_CAP_START+54)
    #DEFINE WM_CAP_GRAB_FRAME (WM_CAP_START+60)
 
        Width=660
        Height=560
        Autocenter=.T.
        Caption="Capturar Foto"
        MinButton=.F.
        MaxButton=.F.
        ICON = "200785027.ico"
        CLOSABLE = .F.
        SHOWWINDOW = 1
        windowtype = 1
        hWindow=0
        hCapture=0
        capWidth=0
        capHeight=0
        capOverlay=0
 
 
    ADD OBJECT cmdGetFrame As CommandButton WITH Default=.T.,;
                Left=15, Top=490, Height=27, Width=90, Caption="Capturar",;
                Enabled=.F.
 
    ADD OBJECT cmdPreview As CommandButton WITH Default=.T.,;
                Left=106, Top=490, Height=27, Width=100, Caption="Activar camara",;
                Enabled=.F.
 
    ADD OBJECT cmdClose As CommandButton WITH Cancel=.T.,;
               Left=250, Top=490, Height=27, Width=70, Caption="Cerrar"
 
 
    PROCEDURE Activate
    IF THIS.hWindow = 0
       DECLARE INTEGER GetFocus IN user32
       THIS.hWindow = GetFocus()
       THIS.CreateCaptureWindow
       THIS.DriverConnect
    ENDIF
 
 
 
    PROCEDURE Destroy
    THIS.ReleaseCaptureWindow
 
    PROCEDURE cmdClose.Click
    ThisForm.Release
 
    PROCEDURE cmdGetFrame.Click
    ThisForm.GetFrame
    MESSAGEBOX("Archivo generado en "+sys(5)+sys(2003)+"\captura\"+"capfoto.jpg",64,"Captura realizada")
    ThisForm.StartPreview
    
 
    PROCEDURE cmdPreview.Click
    ThisForm.StartPreview
 
    PROCEDURE GetFrame
    #DEFINE WM_CAP_FILE_SAVEDIB (WM_CAP_START + 25)
 
    LOCAL lcFile
    lcFile = "" && File name to create
    lcFile = "c:\temp\sample.bmp"
    xF = 0
    DO WHILE .T.
       xF = xF + 1
       lcfile = "captura\Cntr"+ALLTRIM(STR(xf))+".jpg"
       IF !FILE(lcfile )
          EXIT
       ENDIF
    ENDDO
    *lcfile = sys(5)+sys(2003)+"\captura\"+"capfoto.jpg"
 
    THIS.msg(WM_CAP_GRAB_FRAME, 0,0)
    THIS.msg(WM_CAP_FILE_SAVEDIB, 0, lcFile,1)
    tHIS.msg(WM_CAP_GRAB_FRAME, 0,0)
    RETURN
 
 
    PROCEDURE CreateCaptureWindow
    #DEFINE WS_CHILD 0x40000000
    #DEFINE WS_VISIBLE 0x10000000
 
    DECLARE INTEGER capCreateCaptureWindow IN avicap32;
    STRING lpszWindowName, LONG dwStyle,;
    INTEGER x, INTEGER y,;
    INTEGER nWidth, INTEGER nHeight,;
    INTEGER hParent, INTEGER nID
 
    THIS.hCapture = capCreateCaptureWindow("",WS_CHILD+WS_VISIBLE,10,8,640,480, THIS.hWindow,1)
 
 
 
    PROCEDURE DriverConnect
    THIS.msg(WM_CAP_DRIVER_CONNECT, 0,0)
    IF THIS.IsCaptureConnected()
        THIS.GetCaptureDimensions
        STORE .T. TO THIS.cmdGetFrame.Enabled,;
        THIS.cmdPreview.Enabled
        THIS.Caption = THIS.Caption + ": conectado, " +;
        LTRIM(STR(THIS.capWidth)) + "x" +;
        LTRIM(STR(THIS.capHeight))
    ELSE
        THIS.Caption = THIS.Caption + ": falla al conectar"
    ENDIF
 
    PROCEDURE DriverDisconnect
    THIS.msg(WM_CAP_DRIVER_DISCONNECT, 0,0)
 
    PROCEDURE ReleaseCaptureWindow
    IF THIS.hCapture <> 0
        THIS.DriverDisconnect
        DECLARE INTEGER DestroyWindow IN user32 INTEGER hWnd
        = DestroyWindow(THIS.hCapture)
        THIS.hCapture = 0
    ENDIF
 
    PROCEDURE msg(msg, wParam, lParam, nMode)
    IF THIS.hCapture = 0
       RETURN
    ENDIF
 
    IF VARTYPE(nMode) <> "N" Or nMode=0
        DECLARE INTEGER SendMessage IN user32;
        INTEGER hWnd, INTEGER Msg,;
        INTEGER wParam, INTEGER lParam
        = SendMessage(THIS.hCapture, msg, wParam, lParam)
    ELSE
        DECLARE INTEGER SendMessage IN user32;
        INTEGER hWnd, INTEGER Msg,;
        INTEGER wParam, STRING @lParam
        = SendMessage(THIS.hCapture, msg, wParam, @lParam)
    ENDIF
 
    FUNCTION IsCaptureConnected
    * analyzing fCaptureInitialized member of the CAPDRIVERCAPS structure
    #DEFINE CAPDRIVERCAPS_SIZE 44
        LOCAL cBuffer, nResult
        cBuffer = Repli(Chr(0),CAPDRIVERCAPS_SIZE)
        THIS.msg(WM_CAP_DRIVER_GET_CAPS, Len(cBuffer), @cBuffer, 1)
        THIS.capOverlay = buf2dword(SUBSTR(cBuffer,5,4))
        nResult = Asc(SUBSTR(cBuffer, 21,1))
    RETURN (nResult<>0)
 
 
    PROCEDURE GetCaptureDimensions
    * reading uiImageWidth and uiImageHeight members
    * of the CAPSTATUS structure
    #DEFINE CAPSTATUS_SIZE 76
    LOCAL cBuffer
    cBuffer = Repli(Chr(0), CAPSTATUS_SIZE)
    THIS.msg(WM_CAP_GET_STATUS, Len(cBuffer), @cBuffer, 1)
    THIS.capWidth = buf2dword(SUBSTR(cBuffer,1,4))
    THIS.capHeight = buf2dword(SUBSTR(cBuffer,5,4))
 
    PROCEDURE StartPreview
        THIS.msg(WM_CAP_SET_PREVIEWRATE, 30,0)
        THIS.msg(WM_CAP_SET_PREVIEW, 1,0)
        IF THIS.capOverlay <> 0
        THIS.msg(WM_CAP_SET_OVERLAY, 1,0)
    ENDIF
 
    PROCEDURE StopPreview
    THIS.msg(WM_CAP_SET_PREVIEW, 0,0)
ENDDEFINE
 
 
 
FUNCTION buf2dword(lcBuffer)
    RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
    BitLShift(Asc(SUBSTR(lcBuffer, 2,1)), 8) +;
    BitLShift(Asc(SUBSTR(lcBuffer, 3,1)), 16) +;
    BitLShift(Asc(SUBSTR(lcBuffer, 4,1)), 24)
Répondre à tous
Répondre à l'auteur
Transférer
0 nouveau message