Ir al contenido


Foto

DELPHI FOR PHP, insertar imagen a un form desde un campo MySql


  • Por favor identifícate para responder
10 respuestas en este tema

#1 juanpy

juanpy

    Member

  • Miembros
  • PipPip
  • 11 mensajes

Escrito 29 marzo 2012 - 10:20

Estimados,

Tengo un form en mi proyecto y debo insertar una imagen dinamica que cambiara deacuerdo al registro subido desde una tabla MySql.

El caso es que probe usado todas las combinaciones de propiedades y solo logro mostrar un monton de signos bajo mis elementos.

Gracias por la pronta ayuda.
  • 0

#2 taqtaq

taqtaq

    Member

  • Miembros
  • PipPip
  • 13 mensajes
  • LocationArgentina

Escrito 29 marzo 2012 - 03:37

Hola juampy

Creo que tu problema pasa por la forma en que cargaste le imagen en el campo blob de la base de datos.
Me pasó lo mismo con firebird y estuve buscando hasta que encontré esto:

http://www.jomitech....upload&start=10

Para subir las imagenes en firebird tuve que modificar ligeramente lo que dicen ahí pero seguramente en mysql debe funcionar perfecto.
Luego de subirlas con ese método, las podía ver sin problemas, seteando la propiedad Binary a true.

Aunque tu trabajas con MySql, igual dejo lo que hice para firebird y puedes corroborar en el foro de jomitech lo que estoy comentando acerca de cómo hacerlo con MySql : (es obvio que se requiere un Upload, una bd, etc.)

    function Button1Click($sender, $params)
    {
      if( $this->Upload1->isUploadedFile() )
        {
        $data = file_get_contents( $this->Upload1->FileTmpName);

            // Convert to hex.
          $databin =/*"0x" .*/ bin2hex( $data );

        $IDPERSONA = $this->tbPERSONAS1->ID_PERSONA;
        $this->dbBDPRUEBA1->execute( "UPDATE PERSONAS SET FOTO=? WHERE ID_PERSONA = ".$IDPERSONA,$data );

        }

    }


Saludos


  • 0

#3 juanpy

juanpy

    Member

  • Miembros
  • PipPip
  • 11 mensajes

Escrito 19 abril 2012 - 01:43

Estimado Taqtaq,

Si tienes razón pero mi problema es el siguiente:

En la pagina que estoy creado, inserte desde los objetos additional un contenedor de imagen (Image1)

Las propiedades de dicho objeto (inspector de objetos) son:



delphi
  1. Autosize    Falso
  2. Binary        Falso
  3. BinaryType image/jpeg
  4. Border      True
  5. Cached      Falso
  6. Center      Falso
  7. Cursor      crDefaul
  8. DataField  [empty]
  9. DataSource [empty]
  10. Enable      True
  11. Hnt            [empty]
  12. ImageSource [empty]
  13. Layer 0
  14. Left 602
  15. Link [empty]
  16. LinkTarget [empty]
  17. Name Image2
  18. ParentShowHnt True
  19. PopupMenu [empty]
  20. Proportional True
  21. ShowHnt Falso
  22. Stretch Falso
  23. Style [empty]
  24. Tag 0
  25. Top 106
  26. Visible True
  27. Width 178



El código que uso para vincular el objeto Image1 con el campo de mi tabla MySql es mas o menos asi:

if ($this->ConsultaSocio->fields['foto']<>"") {
        $this->Image2->ImageSource=$this->ConsultaSocio->fields['foto']; // usuario/contraseña incorrecta
    }
    else $this->Image2->ImageSource='FND2.jpg'; 


Necesito mostrar la imagen no grabarla en la tabla.

Muchas gracias amigo y espero me pueda seguir ayudando. (y)

  • 0

#4 taqtaq

taqtaq

    Member

  • Miembros
  • PipPip
  • 13 mensajes
  • LocationArgentina

Escrito 20 abril 2012 - 10:14

Creo que el problema pasa por no asignar las propiedades datasource y datafield.

Al menos con Firebird, yo configuro el componente Image de RADPHP asignando la propiedad datasource y datafield y me muestra el grafico que está guardado en la BD.

Por lo que veo, vos trabajás con la propiedad  "ImageSource" que la ayuda de RADPHP dice que es: "Source of the image denotes a path where the image is located" es dcir, ahí tendrías que poner el path de la imagen guardada en el disco y no en la BD.

En síntesis:

* Si tenés la imagen guardada en un campo de la base de datos, utilizá la propiedad Datafield del componente Image (y obviamente la propiedad datasource)

DataField = "FOTO"
DataSource = Datasource

Además, yo configuro:

Binary = true
BinaryType = image/jpeg (porque son jpeg las imagenes guardadas)


* Si tenés la imagen guardada en el disco, entonces:

Imagesource = (path a la imagen)


Bueno, probá eso y vemos que pasa
Saludos


  • 0

#5 juanpy

juanpy

    Member

  • Miembros
  • PipPip
  • 11 mensajes

Escrito 23 abril 2012 - 08:20

Estiamdo taqtaq,

Probe con las instrucciones y consejos que usted me indico pero lamentablemente no he podido levantar la imagen.

Active:

- Binary
- image/jpeg
- DateField ("foto")
- DataSource ("ListaDeSocios")

Pero el form me aparece con un error en la caja de la imagen (link azul con la ruta del error)

La tabla contiene un campo tipo LongText en donde almacena el binario de la imagen, no existen otros campos con mas información acerca del tipo de imagen, el tamaño, etc.

El codigo binario de la imagen al principio escribe 3 caracteres "JPG".

Gracias estimado por cualquier aporte al respecto.

  • 0

#6 taqtaq

taqtaq

    Member

  • Miembros
  • PipPip
  • 13 mensajes
  • LocationArgentina

Escrito 25 abril 2012 - 03:11

En mi caso, las imagenes que guardé en la base de datos no comienzan con las letras JPG.

Te sugiero:
* probar mostrar la imagen con rutinas de php en las que no intervenga RADPHP, es decir, utilizar rutinas que puedes encontrar en internet para mostrar imagenes desde las bd.
* intentes guardar el contenido del campo de la BD en un archivo y luego probar cargarlo en una imagen utilizando el path, es decir, usar la propiedad imagesource del componente Image de RADPHP.
* probar a cargar imagenes con la rutina que te escribí más arriba que la saqué del foro de Jomitech y ver cómo las guarda en la base de datos. Luego intentar verlas con el componente Image de RADPHP.
  Al momento de guardar la imagen en la BD actual, ¿no habrás agregado algún dato antes de la cabecera del jpg que impide que se muestre luego?
* Tal vez podrías intentar preguntar en algún otro foro específico de php y mysql o bien plantear esta misma pregunta aquí mismo pero en el foro de php.

En fin, no tengo experiencia en PHP por lo que lamentablemente se me reducen las posibilidades de seguir ayudándote.

Me interesa tu tema por lo que si tienes algún avance o puedes comprender dónde reside el problema, si puedes, te pido que lo publiques en este foro.

Saludos

  • 0

#7 juanpy

juanpy

    Member

  • Miembros
  • PipPip
  • 11 mensajes

Escrito 25 abril 2012 - 03:27

Estimado,

He probado muchas alternativas y he echo un monton de laboratorios.

Encontre algo que quizas sirva pero no se como adaptarlo a mi caso:

CHECHE81
11-05-2007, 16:32:55
Saludos ::de nuevo jejeje con la novedad de que un camarada del foro de Programadores
Delphi de Mexico llamado ARR_F (Adrian Fuentes) me ayudo a resolver el problema de las
imagenes ya que en Delphi for PHP, existe un componente llamado DBRepeater el cual
interactua con un dataset y repite los controles que esten dentro de el, asi mostrandonos
las imagenes sin ningun problema....solo enganchandolo a un datasorce del dataset claro...
y es muy facil de utilizar....adentro del DBRepeater metemos el control que queremos que se
repita en nuestro caso un Image y en su evento BeforeShow le damos la ruta a nuestro Image
para que jale las imagenes de nuestra tabla aslgo como esto:::

$sender->ImageSource = 'Imagenes/' . $this->tbimagenes1->Ruta;

y listo nosmuestra las imagenes que estan ennuestra tabla, aclaro que solo va el nombre con
la extencion y ya la simagenes en la carpeta correspondiente okas...espero les sirva okas
de antemano gracias por su tiempo.



Trate de adaptarlo a mi proyecto pero no tiene caso, no pude levantar la aplicacion.

Bueno amigo, voy a realizar los laboratorios que usted me indica y le cuento, muchas gracias.

  • 0

#8 JuanPalmaSoft

JuanPalmaSoft

    Advanced Member

  • Miembros
  • PipPipPip
  • 76 mensajes
  • LocationDistrito Federal

Escrito 03 mayo 2012 - 02:03

buenas

que tal esta delphi for PHp, odria enviarme alguna doc, para estudiar esta herramienta.

gracias
  • 0

#9 juanpy

juanpy

    Member

  • Miembros
  • PipPip
  • 11 mensajes

Escrito 03 mayo 2012 - 02:24

Estimado,

Aqui estamos lidiando con la herramienta.

Tengo algo poco pero es mejor que nada, digame como se la envio y listo.

Saludos

  • 0

#10 juanpy

juanpy

    Member

  • Miembros
  • PipPip
  • 11 mensajes

Escrito 04 mayo 2012 - 10:41

Estimado taqtaq,

Logre guardar el archivo de la tabla en una ubicación de mi disco local, pero al tratar de editar me informa que el formato no es compatible.

Al momento de ver la estructura del archivo (simbolo del sistema c:\>type archivo.jpg), en su encabezado me aparece una leyenda que dice: VFP Rocks!, lo que me hace presumir que la des/codificacion del archivo es realizada por alguna herramienta no compatible con windows y/o php.

Usted se a topado con este tipo de problemas.

Gracias.
  • 0

#11 taqtaq

taqtaq

    Member

  • Miembros
  • PipPip
  • 13 mensajes
  • LocationArgentina

Escrito 09 mayo 2012 - 05:36

Bueno, por lo que dices, cada vez más me inclino por pensar que dificilmente puedas mostrar la imagen que tienes guardada en la base de datos,  al menos de manera directa.

A mí me pasó que en una base de datos las imagenes eran cargadas con una aplicación delphi que les adicionaba una cabecera,
por lo que no podía mostrar esas imagenes con RADPHP.

En tu caso, tendrías que averiguar cómo fueron guardadas e intentar traducirlas a un formato legible.
Si no puedes hacer eso porque no encuentras a la persona que lo hizo, yo intentaría determinar si se trata de una cabecera agregada
o si el archivo tiene un formato codificado.

Si es solo una cabecera, podrías eliminar esa parte del archivo para poder usar el contenido, es decir, la imagen.
Si no es una cabecera y se trata de un archivo guardado con una codificación o encriptación o lo que sea,
entonces me parece que no vas a tener muchas chances de ver la imagen.

Para la ultima posibilidad, tendrías la alternativa de crear otro campo que a través de una aplicación delphi puedas "rellenar" con la imagen del campo original.
En ese caso tendrías que recorrer toda la base de datos, mostrar la imagen en la pantalla y copiar la porción de la pantalla en el nuevo campo. No creo que sea fácil de hacer porque deberías usar la aplicación original ya que con delphi tampoco podrías leer la imagen leyendo el campo de la base de datos porque que no conoces el formato.

Espero te sirva
Saludos



  • 0




IP.Board spam blocked by CleanTalk.