Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    visualizzare una immagine nella stessa pagina in cui è stata creata con GD

    ho uno strano problema per un progetto universitario cui sto lavorando e su cui spero voi possiate portare un po' di luce

    tramite un form carico in post un file di tipo immagine; l'action del post punta ad una pagina chiamata upload.php

    in questa pagina, però, al contrario di quello che normalmente si fa, non sposto il file uppato nell'opportuna locazione del file system, ma creo una istanza della classe Photo. Questa mia classe accetta come parametri l'immagine sotto forma di dati raw (cosi' come preso dal post mediante l'array $_FILES) ed una serie di parametri come il nome, il tipo e così via. Il costruttore di questa classe si preoccupa, poi, di memorizzare in un campo privato al suo interno l'immagine (mediante la funzione GD imagecreatefromstring() e di creare una thumbnail di opportune dimensioni (funzione imagecopyresampled()) e di memorizzare anch'essa in un opportuno campo private.

    a questo punto io ho l'oggetto Photo contenente al suo interno fisicamente le due immagini.

    ora ho necessità che nella pagina upload.php sia visualizzata la thumbnail dell'immagine appena creata. La soluzione più elegante, a mio giudizio, è quella di utilizzare un metodo __tostring che restituisca direttamente la stringa html, così che possa fare qualcosa del tipo:

    codice:
    // supponendo che $pippo sia un oggetto Photo valido
    echo $pippo;
    ed ottenere ad esempio:
    codice:
    <a href="<indirizzo immagine originale" title="<descrizione>">[img]<indirizzo thumbnail>[/img]
    potete quindi immaginare il mio problema: le due immagini non sono nel file system! sono state appena create ed esistono solo ed esclusivamente nello scope dell'istanza $pippo. Non so dove far "puntare" i due tag html!

    la classe Photo ha, naturalmente, due campi pubblici getImage e getThumbnail che settano nell'header l'opportuno Content-type e restituiscono l'immagine, ma come potete immaginare ciò non mi aiuta a risolvere il problema che, formalmente, penso di poter riassumere in: come esaudire una request http separata con un oggetto che esiste solo nello scope della request corrente?

    l'unica cosa che mi viene in mente è quella di memorizzare $pippo in una variabile di sessione, con un nome molto univoco, e nei tag html chiamare un file php che recupera $pippo e chiama showImage e showThumbnail, ma non c'è una soluzione migliore?
    Gabriele B. - http://9thcircle.it

  2. #2
    Perchè non vuoi utilizzare il filesystem come archivio per le immagini?

  3. #3
    nessun motivo particolare, a dire il vero, è solo che l'ho creata così...diciamo per "motivi accademici". Cmq potrei anche modificarla in modo che le immagini siano "definitivamente" caricate sul file system, non è quello il punto.

    non è quello che succede dopo il commit, ad essere problematico. È quello che succede prima, ovvero quando le immagini sono state caricate e devono essere alterate in qualche maniera (crop e similari) prima di poter essere effettivamente confermate
    Gabriele B. - http://9thcircle.it

  4. #4
    Le carichi in una cartella di upload temporaneo
    Le manipoli (es. ridimensioni)
    Richiedi conferma all'utente
    Infine le sposti definitivamente nella cartella di upload definitivo
    Se l'utente non effettua la conferma o, ad esempio, rimangono per piu' di 24 ore nella cartella di upload temporaneo, le elimini.

  5. #5
    non è chiaro

    DEVO fare in quel modo li'

    è una specifica richiesta di progetto: devo creare degli oggetti e, presumibilmente, passarli da una richiesta all'altra
    Gabriele B. - http://9thcircle.it

  6. #6
    Il progetto richiede la creazione in PHP di oggetti e la loro condivisione tra una richiesta HTTP e quella successiva?

  7. #7
    esatto

    diciamo che al 90% l'ho fatto creandomi un mio sistema piuttosto sofisticato di persistenza di oggetti tra una pagina e l'altra mediante l'uso di variabili di sessione

    ma questo caso specifico, ancora mi manca...
    Gabriele B. - http://9thcircle.it

  8. #8
    Se fosse un progetto reale personalmente non lo implementerei cosi', comunque:

    Crea uno script a se stante che recupera l'oggetto Photo dalla sessione e richiama il metodo getThumbnail() o getImage() a seconda della necessità.

    All'interno del metodo __tostring() della classe Photo, fagli restituire un tag IMG con SRC che punta all'URL dello script creato al passo precedente.

  9. #9
    ok, mi sa che è l'unica...grazie cmq! ^^
    Gabriele B. - http://9thcircle.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.