Foros del Web » Programando para Internet » PHP »

Duda con libreria GD imprimir resultado en misma pagina

Estas en el tema de Duda con libreria GD imprimir resultado en misma pagina en el foro de PHP en Foros del Web. Tengo una pagina donde genero una imagen GD mediante un formulario.. ahora el problema es que no se como mostrar la imagen en la misma ...
  #1 (permalink)  
Antiguo 05/12/2011, 15:14
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Exclamación Duda con libreria GD imprimir resultado en misma pagina

Tengo una pagina donde genero una imagen GD mediante un formulario.. ahora el problema es que no se como mostrar la imagen en la misma pagina donde esta el formuladio.. solo se hacerlo para que se muestre en una pagina distinta.. pero quiero que se muestre en la misma pagina..
Quisiera contar con su ayuda...! Gracias..!!

aqui les dejo el codigo


Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Documento sin título</title>
  6. </head>
  7.  
  8. <body>
  9.  
  10.  
  11. <?php
  12.  
  13. if(isset($_POST['ok'])){
  14. $texto = $_POST['texto'];
  15. $texto2 = $_POST['texto2'];
  16. $texto3 = $_POST['texto3'];
  17. $tamano = $_POST['tamano'];
  18. $tamano2 = $_POST['tamano2'];
  19. $tamano3 = $_POST['tamano3'];
  20. $fuente = $_POST['fuente'];
  21. $fuente2 = $_POST['fuente2'];
  22. $fuente3 = $_POST['fuente3'];
  23.  
  24. header("Content-type: image/gif");
  25. $img = imagecreatefromgif("imagen2.gif");
  26. $rojo = imagecolorallocate($img,10,10,10);
  27. $negro = imagecolorallocate($img,0,0,0);
  28. imagettftext($img,$tamano,0,1,15,$negro,$fuente,$texto);
  29. imagettftext($img,$tamano2,0,1,30,$negro,$fuente2,$texto2);
  30. imagettftext($img,$tamano3,0,1,45,$negro,$fuente3,$texto3);
  31.  
  32. imagegif($img);
  33. imagedestroy($img);
  34. } else {
  35. ?>
  36. <img src="resul.php" width="150" height="50">
  37.  
  38. <form method="POST" action="" target="_self">
  39.   <p><b>Linea1</b>
  40.   <br><input type="text" name="texto" id="texto">
  41.   <select name="tamano" id="tamano">
  42.     <option value="10">10</option>
  43.     <option value="11">11</option>
  44.     <option value="12">12</option>
  45.     <option value="13">13</option>
  46.     <option value="14">14</option>
  47.     <option value="15">15</option>
  48.     <option value="16">16</option>
  49.     <option value="17">17</option>
  50.     <option value="18">18</option>
  51.     <option value="19">19</option>
  52.   </select>
  53.   <label for="fuente"></label>
  54.   <select name="fuente" id="fuente">
  55.     <option value="arial.ttf">arial</option>
  56.     <option value="times.ttf">times roman</option>
  57.   </select>
  58.   <br>
  59.   <b>Linea2</b><br><input type="text" name="texto2" id="texto2">
  60.   <select name="tamano2" id="tamano2">
  61.     <option value="10">10</option>
  62.     <option value="11">11</option>
  63.     <option value="12">12</option>
  64.     <option value="13">13</option>
  65.     <option value="14">14</option>
  66.     <option value="15">15</option>
  67.     <option value="16">16</option>
  68.     <option value="17">17</option>
  69.     <option value="18">18</option>
  70.     <option value="19">19</option>
  71.   </select>
  72.   <select name="fuente2" id="fuente2">
  73. <option value="arial.ttf">arial</option>
  74.     <option value="times.ttf">times roman</option>
  75.   </select>
  76.   <br>
  77.   <b>Linea3</b>
  78.   <br><input type="text" name="texto3" id="texto3">
  79.   <select name="tamano3" id="tamano3">
  80.     <option value="10">10</option>
  81.    <option value="11">11</option>
  82.     <option value="12">12</option>
  83.     <option value="13">13</option>
  84.     <option value="14">14</option>
  85.     <option value="15">15</option>
  86.     <option value="16">16</option>
  87.     <option value="17">17</option>
  88.     <option value="18">18</option>
  89.     <option value="19">19</option>
  90.   </select>
  91.   <select name="fuente3" id="fuente3">
  92. <option value="arial.ttf">arial</option>
  93.     <option value="times.ttf">times roman</option>
  94.   </select>
  95.   </p>
  96.   <p>
  97.     <label for="tamano2"></label>
  98.     <br>
  99.     <input type="submit" name="ok" value="OK!">
  100.   </p>
  101. </form>
  102.  
  103. <?php
  104. }
  105. ?>
  106.  
  107.  
  108.  
  109. </body>
  110. </html>
  #2 (permalink)  
Antiguo 05/12/2011, 15:56
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Duda con libreria GD imprimir resultado en misma pagina

Hace unos días alguien preguntó exactamente lo mismo, casi creería que son los mismos datos. El problema no es de GD. Lo que necesitas es la manera de mostrar contenido en la misma página sin refrescar.

Hace unos post respondí algunas opciones que conozco: puedes usar un iframe para la imagen o bien hacer el proceso con ajax.
  #3 (permalink)  
Antiguo 05/12/2011, 17:20
 
Fecha de Ingreso: diciembre-2011
Ubicación: Buenos Aires
Mensajes: 5
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: Duda con libreria GD imprimir resultado en misma pagina

flush()
http://php.net/manual/es/function.flush.php

ob_flush()
http://www.php.net/manual/es/function.ob-flush.php
  #4 (permalink)  
Antiguo 05/12/2011, 20:42
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Duda con libreria GD imprimir resultado en misma pagina

okey voy a probar y les comento..!
  #5 (permalink)  
Antiguo 05/12/2011, 20:45
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Duda con libreria GD imprimir resultado en misma pagina

Cita:
Iniciado por padem Ver Mensaje
flush()
http://php.net/manual/es/function.flush.php

ob_flush()
http://www.php.net/manual/es/function.ob-flush.php
No entendi mucho estas funciones :S si me las explicaras un poco seria bueno..! :D Gracias..!
  #6 (permalink)  
Antiguo 05/12/2011, 21:12
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Duda con libreria GD imprimir resultado en misma pagina

Cita:
Iniciado por ocp001a Ver Mensaje
Hace unos días alguien preguntó exactamente lo mismo, casi creería que son los mismos datos. El problema no es de GD. Lo que necesitas es la manera de mostrar contenido en la misma página sin refrescar.

Hace unos post respondí algunas opciones que conozco: puedes usar un iframe para la imagen o bien hacer el proceso con ajax.
Hola estaba instentando hacerlo con iframe y creo que es la solucion... ahora no se como integrarlo al codigo me puedes hechar una ayuda??
en realidad quiero algo como esto...

http://www.sellofacil.com/custom.php?id=6&t=4
  #7 (permalink)  
Antiguo 05/12/2011, 22:44
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Duda con libreria GD imprimir resultado en misma pagina

No puedes mezclar contenido HTML con imágenes generadas directamente, bueno, realmente sí se puede, pero es medio complicado, lo más sencillo es:

1- Tomas los datos que necesitas para generar la imagen, guardándolos en variables de sesión
2- Inicias tu código HTML e incluyes una etiqueta <img src="script_que_genera_imagen.php" />
3- En ese script recuperas los datos desde sesión, generas la imagen y la envías con sus respectivos encabezados
4- Voila!
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 05/12/2011, 23:03
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Duda con libreria GD imprimir resultado en misma pagina

Cita:
Iniciado por Triby Ver Mensaje
No puedes mezclar contenido HTML con imágenes generadas directamente, bueno, realmente sí se puede, pero es medio complicado, lo más sencillo es:

1- Tomas los datos que necesitas para generar la imagen, guardándolos en variables de sesión
2- Inicias tu código HTML e incluyes una etiqueta <img src="script_que_genera_imagen.php" />
3- En ese script recuperas los datos desde sesión, generas la imagen y la envías con sus respectivos encabezados
4- Voila!
Exactamente eso es lo que estoy tratando de hacer... (puedes hecharle un vistazo a mi codigo.. la etiqueta <img src="resultado.php" /> la puse dentro del --> else { ?> "aqui") esta bien ponerla alli? y el formulario en action=" " le coloco "resultado.php? o como hago para que se quede en la misma pagina y me imprima la imagen..? es alli donde estoy estancado...

en esta pagina esta un ejemplo exacto de lo que quiero hacer.. cuando le de OK me muestre la imagen arriba con los datos..

http://www.sellofacil.com/custom.php?id=6&t=4
tambien esta
http://www.caricatos.net/gradientes/index.html?gradiente=H&color1=FFFCCD&color2=D68AA5

Última edición por soulbless; 05/12/2011 a las 23:11
  #9 (permalink)  
Antiguo 05/12/2011, 23:25
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Duda con libreria GD imprimir resultado en misma pagina

Mira, las dos primeras líneas del archivo (tanto del formulario como donde vas a generar la imagen) tendrán que ser:

Código PHP:
Ver original 

Esto te permitirá tener a la mano las variables que necesites para generar la imagen, luego, donde verificas si se está procesando el formulario:
Código PHP:
Ver original
  1. if(isset($_POST['ok'])) {
  2.     // Tomas todos los datos de $_POST y los pones en una variable de sesión
  3.     $_SESSION['imagen'] = $_POST;
  4.     // Generas la etiqueta de imagen:
  5.     echo '<img src="script_que_genera_la_imagen.php" />';
  6. }
  7.  
  8. // Continúas con el proceso normal

Después, en el script donde generas la imagen, sólo tomas los datos de la variable de sesión en vez de $_POST:
Código PHP:
Ver original
  1. // Sólo para evitar errores, verificas que exista la variable:
  2. if( ! isset($_SESSION['imagen'])) {
  3.     die('Acceso no permitido.');
  4. }
  5.  
  6. $texto = $_SESSION['imagen']['texto'];
  7. // Haces lo mismo para el resto de tus variables
  8. // Envías encabezados y generas la imagen
  9.  
  10. // Eliminas los datos de sesión:
  11. unset($_SESSION['imagen']);
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 06/12/2011, 09:50
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Duda con libreria GD imprimir resultado en misma pagina

Cita:
Iniciado por Triby Ver Mensaje
Mira, las dos primeras líneas del archivo (tanto del formulario como donde vas a generar la imagen) tendrán que ser:

Código PHP:
Ver original 

Esto te permitirá tener a la mano las variables que necesites para generar la imagen, luego, donde verificas si se está procesando el formulario:
Código PHP:
Ver original
  1. if(isset($_POST['ok'])) {
  2.     // Tomas todos los datos de $_POST y los pones en una variable de sesión
  3.     $_SESSION['imagen'] = $_POST;
  4.     // Generas la etiqueta de imagen:
  5.     echo '<img src="script_que_genera_la_imagen.php" />';
  6. }
  7.  
  8. // Continúas con el proceso normal

Después, en el script donde generas la imagen, sólo tomas los datos de la variable de sesión en vez de $_POST:
Código PHP:
Ver original
  1. // Sólo para evitar errores, verificas que exista la variable:
  2. if( ! isset($_SESSION['imagen'])) {
  3.     die('Acceso no permitido.');
  4. }
  5.  
  6. $texto = $_SESSION['imagen']['texto'];
  7. // Haces lo mismo para el resto de tus variables
  8. // Envías encabezados y generas la imagen
  9.  
  10. // Eliminas los datos de sesión:
  11. unset($_SESSION['imagen']);
Perfecto vere que tal me va y te estoy avisando..! :D
  #11 (permalink)  
Antiguo 06/12/2011, 10:14
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Duda con libreria GD imprimir resultado en misma pagina

Código PHP:
Ver original
  1. // Sólo para evitar errores, verificas que exista la variable:
  2. if( ! isset($_SESSION['imagen'])) {
  3.     die('Acceso no permitido.');
  4. }
  5.  
  6. $texto = $_SESSION['imagen']['texto'];
  7. // Haces lo mismo para el resto de tus variables
  8. // Envías encabezados y generas la imagen
  9.  
  10. // Eliminas los datos de sesión:
  11. unset($_SESSION['imagen']);
[/QUOTE]

Ya hice las respectivas modificaciones.. ahora al enviar me sale q no tengo acceso osea q la variable $_session no esta enviando.. sera que tengo q crear un usuario para q esa variable session funcione..?
  #12 (permalink)  
Antiguo 06/12/2011, 10:20
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Duda con libreria GD imprimir resultado en misma pagina

Aki te envio lo que he hecho
Esta es la primera pagina del formulario


Código HTML:
Ver original
  1. <?php session_start();
  2. ?>
  3. <title>primera pagina</title>
  4. </head>
  5.     <?php
  6.  
  7.    if(isset($_POST['ok'])){
  8.    /*$texto = $_POST['texto'];
  9.    $texto2 = $_POST['texto2'];
  10.    $texto3 = $_POST['texto3'];
  11.    $tamano = $_POST['tamano'];
  12.    $tamano2 = $_POST['tamano2'];
  13.    $tamano3 = $_POST['tamano3'];
  14.    $fuente = $_POST['fuente'];
  15.    $fuente2 = $_POST['fuente2'];
  16.    $fuente3 = $_POST['fuente3'];*/
  17.     $_SESSION['texto'] = $_POST;
  18.     $_SESSION['texto2'] = $_POST;
  19.     $_SESSION['texto3'] = $_POST;
  20.     $_SESSION['tamano'] = $_POST;
  21.     $_SESSION['tamano2'] = $_POST;
  22.     $_SESSION['tamano3'] = $_POST;
  23.     $_SESSION['fuente'] = $_POST;
  24.     $_SESSION['fuente2'] = $_POST;
  25.     $_SESSION['fuente3'] = $_POST;
  26.     $_SESSION['imagen'] = $_POST;
  27.     // Generas la etiqueta de imagen:
  28.    echo '<img src="resul.php" />';
  29.      
  30.     } else {
  31.     ?>
  32.      
  33.     <form method="POST" action="resul.php" target="_self">
  34.       <p><b>Linea1</b>
  35.       <br><input type="text" name="texto" id="texto">
  36.       <select name="tamano" id="tamano">
  37.      .....
  38. ...
  39.         <input type="submit" name="ok" value="OK!" >
  40.       </p>
  41. </form>  
  42.     <?php
  43.    }
  44.    ?>
  45.  </body>
  46. </html>

y esta es la pagina que me genera la imagen

Código PHP:
Ver original
  1. <?php session_start();
  2. ?>
  3. <?php
  4.  
  5. if( ! isset($_SESSION['imagen'])) {
  6.     die('Acceso no permitido.');
  7. }
  8.  
  9. $texto = $_SESSION['imagen']['texto'];
  10. $texto2 = $_SESSION['imagen']['texto2'];
  11. $texto3 = $_SESSION['imagen']['texto3'];
  12. $tamano = $_SESSION['imagen']['tamano'];
  13. $tamano2 = $_SESSION['imagen']['tamano2'];
  14. $tamano3 = $_SESSION['imagen']['tamano3'];
  15. $fuente = $_SESSION['imagen']['fuente'];
  16. $fuente2 = $_SESSION['imagen']['fuente2'];
  17. $fuente3 = $_SESSION['imagen']['fuente3'];
  18. // Haces lo mismo para el resto de tus variables
  19. // Envías encabezados y generas la imagen
  20. header("Content-type: image/gif");
  21.  $img = imagecreatefromgif("imagen2.gif"); //Crea la imagen
  22. $rojo = imagecolorallocate($img,10,10,10); //Color Negro
  23. $negro = imagecolorallocate($img,0,0,0); //Color Negro
  24. imagettftext($img,$tamano,0,1,15,$negro,$fuente,$texto);
  25. imagettftext($img,$tamano2,0,1,30,$negro,$fuente2,$texto2);
  26. imagettftext($img,$tamano3,0,1,45,$negro,$fuente3,$texto3);
  27. //imagestring($img,TAMAÑO,X,Y,TEXTO,COLOR); //Escribe Rodrinete en rojo
  28. imagegif($img); //Muestra el nuevo GIF
  29. imagedestroy($img); //Destruye el nuevo gif y lo vuelve a pasar a como estaba antes
  30.  
  31.  
  32. // Eliminas los datos de sesión:
  33. unset($_SESSION['imagen']);
  34.  
  35.  
  36. ?>

Última edición por soulbless; 06/12/2011 a las 10:30
  #13 (permalink)  
Antiguo 06/12/2011, 11:22
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Duda con libreria GD imprimir resultado en misma pagina

$_SESSION['imagen'] = $_POST;

Al poner sólo esa línea, vas a tener en $_SESSION['imagen'] todos los elementos que existan en $_POST y evitas tener que hacer esto:

Código PHP:
Ver original
  1. $_SESSION['imagen']['texto'] = $_POST['texto'];
  2. $_SESSION['imagen']['texto2'] = $_POST['texto2'];
  3. // ... etc

Ahora, sobre la sesión, no necesitas crear usuarios, las sesiones funcionan a la perfección, incluso sin necesidad de un sistema de usuarios.

Este script forma parte de una web donde ya estás manejando sesiones?
En caso de responder afirmativamente, elimina el sessión_start(); sólo del formulario, no del que genera la imagen y prueba nuevamente.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: formulario, html, libreria, resultados
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:12.