- Home
- Categorie
- Coding e Sistemistica
- PHP
- Banner con variabili
-
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.
-
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
-
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
-
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>)