FAQ
Buenas,

Tengo unas imágenes que se generan por código. Especialmente los típicos
códigos de seguridad anti-bots y similares.
El código que genera dicha imagen, se encuentra en un archivo,
llamemosle imagen.php.

Hasta ahora, siempre que necesitava de una de dichas imagenes, lo que
hago es una llamada al archivo como fuente de la imagen, en la forma:

<img src="imagenes/imagen.pgp?opcion=25">

Hasta aqui ningun problema y me funciona perfectamente. Lo que me
gustaría, es que la imagen en lugar de encontrarse en un archivo, se
hallara en una función y que, con la llamada a dicha función, se
generase la imagen correspondiente (sin tener que separar el código que
genera la imagen en un archivo distinto).

Ningún intento resulta: Puesto que para la imagen hay que incluir la
cabecera "Content-type: image/png", cuando llega a esa linea, por
supuesto, da el error de que las cabeceras ya fueron enviadas.

Por lo que he leido y encontrado en todos los ejemplos, así como el
tratamiento que HTML hace de las imagenes, me dice que no es posible. De
todas formas, ¿alguien sabe si realmente es posible? y si es así, ¿como
hacerlo?

Un Saludo,
Jordi.

Search Discussions

  • Manuel González Noriega at Jul 9, 2004 at 4:09 pm

    El vie, 09-07-2004 a las 17:57, Jordi Canals escribió:

    <img src="imagenes/imagen.pgp?opcion=25">

    Hasta aqui ningun problema y me funciona perfectamente. Lo que me
    gustaría, es que la imagen en lugar de encontrarse en un archivo, se
    hallara en una función y que, con la llamada a dicha función, se
    generase la imagen correspondiente (sin tener que separar el código que
    genera la imagen en un archivo distinto).
    Depende de como estructures tu código. Por ejemplo, pongamos que tienes
    un solo scripts que varia su comportamiento según la vble $op
    _________________________________
    switch($op) {

    case 'img':
    $mime = 'img/png';
    $content = generaImg($_GET['opcion']);
    break;

    default:
    $mime = 'application/xhtml+xml';
    $content = generaHtml();
    break;
    }

    header('Content-Type: '.$mime);
    print $content;
    exit;
    _________________


    Con esta psudo-estructura, separando la generación de contenido del
    envio al navegador,no te debería dar problemas



    --
    Manuel trabaja para Simplelógica, construcción web
    (+34) 985 22 12 65 http://simplelogica.net
    escribe en Logicola http://simplelogica.net/logicola/
  • Jorge 'ToRo' Martínez Mauricio at Jul 9, 2004 at 4:31 pm
    no se puede, ya que una imágen es un archivo aparte (por el mismo
    protocolo de http), lo que quieres es algo como ..imágen "embebida" en
    html... y hasta donde se, no se puede.

    Saludos.


    Jorge.
  • Daniel Guerrero at Jul 9, 2004 at 4:41 pm

    El 09/07/2004, a las 11:30, Jorge 'ToRo' Martínez Mauricio escribió:

    no se puede, ya que una imágen es un archivo aparte (por el mismo
    protocolo de http), lo que quieres es algo como ..imágen "embebida" en
    html... y hasta donde se, no se puede.
    Si se puede, lo que hacen los navegadores es solicitar el recurso
    imagen.php?generar=20, lo que debe responder php es con un
    Content-type de tipo image, de hecho en la parte del manual de GD
    viene un ejemplo que cuando lo cargas no te carga un html, sino una
    imagen.

    Lo que le recomiendo a Jordi es que revise si no está mandando
    alguna cabecera/impresión/sesión al inicio del documento, lo mismo
    pasa con las sesiones cuando ocurre un warning en el código, php
    envia información al navegador (un echo/print por ejemplo)
    y ya no se pueden enviar cabeceras,
    si le mandas directa la petición al navegador de la imagen, que te
    regresa?.


    +-+-+-+-+-+-+-+-+-+-+-+-+-+
    No te pido que hagas una búsqueda en Google por mi.
    Eso ya lo hice!!!
  • Jordi Canals at Jul 9, 2004 at 5:22 pm

    Daniel Guerrero wrote:

    Si se puede, lo que hacen los navegadores es solicitar el recurso
    imagen.php?generar=20, lo que debe responder php es con un
    Content-type de tipo image, de hecho en la parte del manual de GD
    viene un ejemplo que cuando lo cargas no te carga un html, sino una
    imagen.
    Bien, justamente eso es lo que decia que hago y que me funciona
    perfectamente. Lo que pretendia es otra cosa ;)
    Lo que le recomiendo a Jordi es que revise si no está mandando
    alguna cabecera/impresión/sesión al inicio del documento, lo mismo
    Si, las cabeceras se envian pues la pagina ya esta practicamente
    generada. Lo que yo preguntaba era por generar la imagen en una función
    y no en un archivo aparte. Lógicamente pretendiendo hacerlo como
    función, puesto que las cabeceras necesariamente ya han sido enviadas a
    la página no se puede enviar el nuevo tipo de contenido.

    Un Saludo,
    Jordi.
  • Jordi Canals at Jul 9, 2004 at 5:17 pm

    Jorge 'ToRo' Martínez Mauricio wrote:
    no se puede, ya que una imágen es un archivo aparte (por el mismo
    protocolo de http), lo que quieres es algo como ..imágen "embebida" en
    html... y hasta donde se, no se puede.
    Eso es lo que yo imaginaba. Realmente lo que pretendía era hacer algo
    como una imagen "embebida" en el código.

    Realmente todos los ejemplos incluyen el script como una imagen aparte.
    Gracias por vuestros comentarios.

    Un Saludo,
    Jordi.
  • Joan Grau at Jul 19, 2004 at 7:33 am
    ob_start();


    "Jordi Canals" <llistes@jcanals.net> escribió en el mensaje
    news:40EEC06A.60502@jcanals.net...
    Buenas,

    Tengo unas imágenes que se generan por código. Especialmente los típicos
    códigos de seguridad anti-bots y similares.
    El código que genera dicha imagen, se encuentra en un archivo,
    llamemosle imagen.php.

    Hasta ahora, siempre que necesitava de una de dichas imagenes, lo que
    hago es una llamada al archivo como fuente de la imagen, en la forma:

    <img src="imagenes/imagen.pgp?opcion=25">

    Hasta aqui ningun problema y me funciona perfectamente. Lo que me
    gustaría, es que la imagen en lugar de encontrarse en un archivo, se
    hallara en una función y que, con la llamada a dicha función, se
    generase la imagen correspondiente (sin tener que separar el código que
    genera la imagen en un archivo distinto).

    Ningún intento resulta: Puesto que para la imagen hay que incluir la
    cabecera "Content-type: image/png", cuando llega a esa linea, por
    supuesto, da el error de que las cabeceras ya fueron enviadas.

    Por lo que he leido y encontrado en todos los ejemplos, así como el
    tratamiento que HTML hace de las imagenes, me dice que no es posible. De
    todas formas, ¿alguien sabe si realmente es posible? y si es así, ¿como
    hacerlo?

    Un Saludo,
    Jordi.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedJul 9, '04 at 3:57p
activeJul 19, '04 at 7:33a
posts7
users5
websitephp.net

People

Translate

site design / logo © 2022 Grokbase