- Home
- Categorie
- Coding e Sistemistica
- PHP
- Banner con variabili
-
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.
-
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" />
-
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"/>
-
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 GETimagedestroy($img);
[/php]
Alla fine per visualizzare devi fare cosi:
<img src="virusgaming.net/cabal/id.php?id_char=4"/>
-
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().
-
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?
-
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.
-
[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
-
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.
-
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.jpgSbaglio o in questo modo mi tocca "semplicemente" riempirlo con le variabili del db?
Grazie ancora per la disponibilità
-
Scusa ma i link mi portano alla home...
-
Aggiungi il **www **davanti... purtroppo non mi fa postare link attivi anche se è da un paio di giorni che dovrebbero darmi il premium user
-
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
-
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
-
Facci vedere il risultato finale poi
-
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?
-
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
ciao ciao
-
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 sono centinaia le bandierine dei paesi ci metterei una vita
-
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.
-
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.