• 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


  • User Attivo

    Non ho parole 😮 mi hai dato più di una spinta per capire. Ho sistemato tutto. A questo punto ti rivolgo solo un'ultima domanda.
    [PHP]$variabile = "<img src=img/image_$tipo.jpg>"
    imagestring ( $img , 3 , $x1 , $y1 , $variabile , $bianco );[/PHP]
    Succede che mi aggiunge nell'immagine il codice

    <img src=img/image_$tipo.jpg>
    

    Non c'è modo di fargli passare il tag <img> senza che lo scriva testualmente? Ho cercato nel manuale le varie funzioni ma non ce ne sono php.net/manual/en/ref.image.php

    Non dirmi che l'unico modo è crearsi tutte le diverse varianti di background :arrabbiato: sono centinaia le bandierine dei paesi ci metterei una vita 😞


  • User Attivo

    Haha non penso si debba creare centinaia di diversi background per ogni bandierina :o.
    Faccio una ricerca su google perchè sicuramente ci sara una soluzione.
    Comunque imagestring() serve solo per scrivere testo.


  • User Attivo

    Trovato: imagecopyresampled() è una funzione che permette di copiare un immagine sopra un altra.
    [php]
    //immagine tua di background e il vario codice di prima
    $img=..
    ...
    ...

    //questa parte la metti dopo aver scritto le variabili sull'immagine

    // Immagine da applicare
    $bnd = imagecreatefromjpeg("bandiera.jpg");

    imagecopyresampled($img,$bnd,$imgX,$imgY, 0,0,$img_largh,$img_alt,$bnd_larg,$bnd_alt);

    //$imgX,$imgY sono le coordinate dove verra incollata la bandierina
    //0,0 sono le coordinate x,y della bandierina, (da dove copiare penso)
    //$img_largh,$img_alt sono larghezza ed altezza del background
    //$bnd_larg,$bnd_alt sono larghezza ed altezza della bandierina
    [/php]Spero di aver scritto tutto bene.


  • User Attivo

    Memic ti ringrazio infinitamente per l'ottimo aiuto che mi hai dato. Mi hai spiegato un argomento difficile come questo in un paio di post. Grazie per il tempo che mi hai dedicato 🙂 l'ho apprezzato moltissimo


  • User Attivo

    Ma figurati, è stato un piacere aiutarti, poi era anche un ottima occasione per me di ripassare quest'argomento.
    Se hai ancora bisogno non esitare a chiedere ;).

    ciao ciao


  • User Attivo

    LoL bhè si in realtà c'è ancora una piccola cosettuccia 🙂 vorrei fornire un bbcode per gli utenti che vogliono utilizzarlo in firma. L'immagine alla fine l'abbiamo camuffata in jpeg ma in realtà è id.php?id=10 quindi funziona solo con l'html. Non ci sarebbe il modo per cambiare l'estensione del file in jpg?

    Cosi va

    <img src=...../id.php?id=10>
    

    Cosi non va 😄

    ![image](...../id.php?id=10>)