• User Attivo

    Banner con variabili

    Ciao

    Giusto ieri avevo chiesto aiuto per un problema simile ma adesso sono costretto a tornare sui miei passi.

    Ho un bannerino sul quale vengono generate mediante uno script php delle variabili. La pagina che lo visualizza ha questo formato di link dominio/id.php

    Vorrei che gli utenti potessero utilizzarlo ad esempio nella propria firma ma il problema è che dovrei trasformare la pagina id.php in jpg ma come fare? 😞 Il web è pieno di bannerini con variabili al loro interno generate da script. Come si fa?


  • User Attivo

    Ciao Kian,

    se ho capito bene il tuo problema, vorresti che lo script id.php restituisca a video un'immagine. Se è così devi usare la funzione 'header' del php.

    :ciauz:


  • User Attivo

    Ciao,
    prova a fare una ricerca su google con "php librerie grafiche" 😉


  • User Attivo

    Grazie delle risposte ma purtroppo non è esattamente risolvibile come da voi indicato (almeno credo). Come dite voi mi vien fuori si un'immagine ma se vado a vedere l'indirizzo è php non jpg, png (...) quindi non mi è utile per quello che devo fare che sarebbe qualcosa di simile a questo

    xfire.com/miniprofile/style-wow/

    Io ho un'immagine popolata di variabili e componenti generati da php+mysql. Per dirla brutalmente mi servirebbe uno script che faccia "stamp" alla sola immagine rendendola jpg o png.


  • User Attivo

    Invece ti serve proprio PHP e le librerie grafiche ;).
    Hai raggione che avrà un estrensione php ma poco importa...
    Usando la funzione header di php indichi al browser che si tratti di un immagine (a tua scelta png o jpeg) pur avendo l'estensione php.

    Per esempio puoi fare benissimo cosi :D:

    <img src="tuosito.com/imagine.php?variabili" />


  • User Attivo

    Uhm... mmm... andando passo passo questa è la pagina dove viene generato il banner

    virusgaming.net/cabal/id.php?id_char=5

    Per renderlo immagine dici di fare semplicemente

    <img src="virusgaming.net/cabal/id.php?id_char=4"/>
    ```oppure
    

    <img src="virusgaming.net/cabal/id.php?id_char=4.jpg"/>


  • User Attivo

    Allora io di solito nel file php che mi genera l'immagine faccio cosi:

    [php]
    //indico al browser di non usare la cache per l'immagine
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past

    //indico al browser che si deve aspettare in output un immagine png
    header ("Content-type: image/png");

    //vario codice qui che mi genera l'immagine
    ...
    ...
    ...

    //alla fine mando l'immagine al browser con la funzione imagepng()

    imagepng($img);

    // di solito cancello l'immagine perchè ogni volta viene generata una nuova
    // in base ai parametri via GET

    imagedestroy($img);

    [/php]
    Alla fine per visualizzare devi fare cosi:
    <img src="virusgaming.net/cabal/id.php?id_char=4"/>


  • User Attivo

    Dimenticavo :x...
    Se tu crei una .jpeg e non .png devi indicare nel header image/jpeg e per creare l'immagine non usi imagepng() ma imagejpeg().


  • User Attivo

    Grazie per l'ottima risposta ma credo di essere nei pasticci 😞 come da te suggerito mi sono fatto una cultura sulle librerie grafiche php e credo che sia un problema per il mio script.

    Nella pagina che mi genera il bannerino ci sono la connessione al db, una query, un paio di if e le variabili sono mostrate all'interno di una struttura html (una tabella). Per intenderci dovrei aggiungere roba di questo tipo
    [PHP]//vario codice qui che mi genera l'immagine
    include("_mysql.php");
    $id = $_GET["id_char"];

    $st=mysql_query("SELECT * FROM ".PREFIX."xxxx WHERE id_char='$id'") or die(mysql_error());
    $row=mysql_fetch_assoc($st);

    if($type=='1') { echo "<font color=#FFFFFF face=Arial size=1>
    <img src=img/ico_main.jpg height=12 width=12> ".$row["var"]."</font>";
    }[/PHP]
    E credo che con un imagejpeg($img); non me la cavo. Avevo pensato di associare tutto il codice appunto a $img ma non si può fare e comunque non funzionerebbe.

    Come procedere? :mmm:


  • User Attivo

    Hmm....
    Potresti postare il codice che ti genera l'immagine e poi cerchiamo di trovare ua soluzione. Vorei verdere come fai a creare l'immagine.


  • User Attivo

    [php]include("_mysql.php");
    $id = $_GET["id_char"];

    $st=mysql_query("SELECT * FROM ".PREFIX."bestclass WHERE id_char='$id'") or die(mysql_error());
    $row=mysql_fetch_assoc($st);

    if($row["classe"]=='WA') { $titolo = "WA"; $type=1; }
    if($row["classe"]=='sFS') { $titolo = "FS"; $type=1; }
    if($row["classe"]=='FB') { $titolo = "FB"; $type=1; }
    if($row["classe"]=='BL') { $titolo = "BL"; $type=1; }
    if($row["classe"]=='FA') { $titolo = "FA"; $type=2; }
    if($row["classe"]=='WI') { $titolo = "WI"; $type=2; }
    if($row["classe"]=='mFS') { $titolo = "FS"; $type=2; }

    echo "<table background=img/footer.png width=277 height=63 cellpadding=0 cellspacing=0>
    <td><img src=img/char_".$row["classe"].".jpg height=20 width=20>
    <b><font color=#FFFFFF face=Arial size=3> ".$row["nickname"]." <img src=flags/".$row["flag"].".gif> $titolo | Lv.".$row["livello"]."
    </font></b></td></tr><tr><td>";

    if($type=='1') { echo "<font color=#FFFFFF face=Arial size=1>
    <img src=img/ico_attack.jpg height=12 width=12> ".$row["attack"]."</font>";
    }
    if($type=='2') { echo "<font color=#FFFFFF face=Arial size=1>
    <img src=img/ico_magic.jpg height=12 width=12> ".$row["magic"]."</font>";
    }

    echo "<font color=#FFFFFF face=Arial size=1>
    <img src=img/ico_defense.jpg height=12 width=12> ".$row["defense"]."</font>";

    echo "<font color=#FFFFFF face=Arial size=1>
    <img src=img/ico_rate.jpg height=12 width=12> ".$row["rate"]."</font>";

    echo "<font color=#FFFFFF face=Arial size=1>
    <img src=img/ico_dmg.jpg height=12 width=12> ".$row["dmg"]."</font>";

    if($type=='1') { echo "<font color=#FFFFFF face=Arial size=1>
    <img src=img/ico_sword_amp.jpg height=12 width=12> ".$row["amp"]."</font>";
    }
    if($type=='2') { echo "<font color=#FFFFFF face=Arial size=1>
    <img src=img/ico_magic_amp.jpg height=12 width=12> ".$row["amp"]."</font>";
    }

    echo "<font color=#FFFFFF face=Arial size=1>
    <img src=img/ico_hp.jpg height=12 width=12> ".$row["hp"]."</font></td></td></tr></table> ";[/php]So che è pasticciato ma il suo lavoro lo fa 😉


  • User Attivo

    Azz....
    Un bel problemuccio, ho paura che facendo cosi sia impossibile inserire questa cosa in firma.
    Tu stai creando una tabella con varie icone ecc.. e accanto metti i valori prelevati dal database. Quindi non abbiamo un immagine vera e propria ma una tabella che sembra un immagine.
    Certamente il suo lavoro lo fa.

    Devi creare un'altra pagina php dove crei l'immagine usando le librerie grafiche. (ti do io una mano per il codice)

    Per esempio questa: miniprofile.xfire.com/bg/wow/type/0/yournamehere.png
    è stata creata partendo da un immagine prefatta e poi si scrive sopra usando php le variabili recuperate da db. (almeno credo)

    In pratica devi creare un immagine uguale alla tua tabella attuale ma lasciando i campi per le variabili vuoti ( la fai con paint, photoshop, gimp...) e la salvi in una cartella.
    Dopo quell'immagine la modifichi usando php per scrivere negli spazzi vuoti le varie variabili, punteggi, livelli ecc che prelevi dal database :D...

    Spero di aver spiegato bene le cose.


  • User Attivo

    Per evitare di crearmi l'immagine con le librerie pixel per pixel posso più semplicemente utilizzare un background jpg già preimpostato come questi?

    virusgaming.net/cabal/var1.jpg
    virusgaming.net/cabal/var2.jpg

    Sbaglio o in questo modo mi tocca "semplicemente" riempirlo con le variabili del db?

    Grazie ancora per la disponibilità


  • User Attivo

    Scusa ma i link mi portano alla home...


  • User Attivo

    Aggiungi il **www **davanti... purtroppo non mi fa postare link attivi anche se è da un paio di giorni che dovrebbero darmi il premium user 😞


  • User Attivo

    E' proprio questo che intendevo. Hai un immagine "vuota" e adesso basta scrivere sopra usando php ;).
    Se ti serve una mano chiedi pure.

    ciao ciao


  • User Attivo

    YES! 🙂 Adesso lo popolo di variabili non dovrei avere problemi. Quando ho finito uso la funzione imagecreatejpg(). Ora metto in pratica vediamo che combino. Intanto ti ringrazio ancora una volta


  • User Attivo

    Facci vedere il risultato finale poi 🙂


  • User Attivo

    Mi sono reso conto che nonostante adesso utilizzo un'immagine di background sto facendo comunque la stessa cosa che c'era prima. Ho sempre il mio file php pieno di query e if. Ho semplicemente rimosso alcuni elementi che adesso sono fissi nel background ma la sostanza non cambia. Quando faccio imagejpeg($img); mi "stampa" sullo schermo il link della pagina (credo sia un modo di dire che è un errore) infatti quando la richiamo con una pagina html con il seguente codice mi da una pagina bianca con le proprietà di una "Immagine JPEG".

    <img src=link_alla_pagina_php>
    ```Credo di essere entrato in un loop :x come faccio a popolare l'immagine con variabili del database ***senza*** ricorrere a quey e due righe di codice? E' assurdo :/ Ok, devo usare le librerie grafiche... ma come faccio una query con una libreria grafica?

  • User Attivo

    Ciao, questo dovrebbe andare bene 😉

    Ho usato l'immagine virusgaming.net/cabal/var1.jpg

    [php]
    <?
    //codice testato e funzionante con l'immagine var1.jpeg
    //poi sta a te personalizzarlo come ti pare e piace

    //1.
    //creo l'immagine a partire da quella esistente var1.jpg
    $img = imagecreatefromjpeg('var1.jpg');

    //2.
    //assegno la coordinata y. A quest'altezza inizia a scrivere
    // (partendo dall'alto)
    $y=42;

    //le coordinate 'X' dei 6 valori (in pixel ovviamente)
    $x1=15;
    $x2=57;
    $x3=101;
    $x4=143;
    $x5=187;
    $x6=232;

    //3.
    // assegno i valori che voglio scrivere sull'immagine
    //io ho messo valori costanti però puoi benissimo estrare i valori dal database
    //magari recuperi l'id usando $_GET['valore'] e poi con quello vai nel db

    $valore1=111;
    $valore2=222;
    $valore3=333;
    $valore4=444;
    $valore5=555;
    $valore6=666;

    //4.
    //scelgo il colore con cui scrivere sull'immagine $img
    $bianco = imagecolorallocate($img,255,255,255);

    //5.
    //imagestring() scrive sull'immagine.
    // come usare la funzione: imagestring(immagine,font, x, y, testo, colore)
    imagestring ( $img , 3 , $x1 , $y , $valore1 , $bianco );
    imagestring ( $img , 3 , $x2 , $y , $valore2 , $bianco );
    imagestring ( $img , 3 , $x3 , $y , $valore3 , $bianco );
    imagestring ( $img , 3 , $x4 , $y , $valore4 , $bianco );
    imagestring ( $img , 3 , $x5 , $y , $valore5 , $bianco );
    imagestring ( $img , 3 , $x6 , $y , $valore6 , $bianco );

    //6.
    //dico al browser ti mando un immagine jpeg
    header('Content-Type: image/jpeg');

    //output immagine creata
    imagejpeg($img);

    //cancello l'immagine dato che la creo ogni volta con valori diversi
    imagedestroy($img);

    ?>
    [/php]Ho testato il codice è funziona 😉 :ciauz:
    ciao ciao