Stampare dati Form su immagine di sfondo

virgus

Nuovo Utente
9 Nov 2010
9
0
0
Salve a tutti sono nuovo ;)

Innanzitutto complimenti per il vostro sito che ho appena scoperto e reputo una risorsa ben fornita :)

Avrei l'esigenza di stampare su una immagine (che fungerà da sfondo) i dati che un utente ha inviato da un form dopo averlo compilato.

Ed inoltre che questi dati siano inseriti in un testo.

Ad esempio:

il form contiene questi dati: nome, cognome, città, data di nascita, etc

compilati i campi ed inviato l'utente si ritrova l'immagine come sfondo e questo testo:

Il membro Mario Rossi, nato a New York, il 27/12/1900 etc etc

So bene che nel forum ci sono cose che mi potrebbero aiutare infatti ho visto molti post simili ma essendo praticamente ignorante su questo linguaggio non so dove andare a metter mani.

Mi aiutereste? :)
 
Anche se nessuno mi ha aiutato sono riuscito a scrivere una stringa php che in parte soddisfa ciò che voglio.

Vorrei però che adesso qualcuno mi aiuti sul serio perchè le mie conoscenze sono arrivate ad un punto morti :P

allora sono riuscito a scrivere un codice php che dopo l'invio dei dati me li stampa in un testo nella stessa pagina.

potete vedere la demo qui:

http://virgus87.altervista.org/inde...&Itemid=241

questo è il codice che ho scritto:

Codice:
<?php
$nome = $_POST["nome"];
$grado = $_POST["grado"];
$officiante = $_POST["officiante"];
$arcibat = $_POST["arcibat"];
$diobat = $_POST["diobat"];
$giorno = $_POST["giorno"];
$mese = $_POST["mese"];
$anno = $_POST["anno"];
if (!isset($_POST['submit'])) { // if page is not submitted to itself echo the form
?>
<html>
<head>
<title>Certificato Battesimo</title>
</head>
<body>
<form method="post" action="<?php echo $PHP_SELF;?>">
Nome Battezzato:<br />
<input type="text" size="12" maxlength="12" name="nome"><br />
Officiante Battesimo:<br />
<input type="text" size="12" maxlength="12" name="officiante"><br />
Grado Ecclesiale:<br />
<select name="grado">
<option value="Suddiacono">Suddiacono</option>
<option value="Diacono">Diacono</option>
<option value="Cappellano Nobiliare">College Nobiliare</option>
<option value="Vicario">Vicario</option>
<option value="Sacrestano">Sacrestano</option>
<option value="Parroco">Parroco</option>
<option value="Vicario Diocesano">Vicario Diocesano</option>
<option value="Vicario Generale">Vicario Generale</option>
<option value="Vescovo">Vescovo</option>
<option value="Arcivescovo">Arcivescovo</option>
<option value="Vice Primate">Vice Primate</option>
<option value="Primate">Primate</option>
<option value="Patriarca">Patriarca</option
<option value="Cadinale">Cardinale</option></select><br />
Arcidiocesi Battesimo:<br />
<select name="arcibat">
<option value="Aquileia">Aquileia</option>
<option value="Genova">Genova</option>
<option value="Milano">Milano</option>
<option value="Firenze">Firenze</option>
<option value="Pisa">Pisa</option>
<option value="Siena">Siena</option>
<option value="Ravenna">Ravenna</option>
<option value="Roma">Roma</option>
<option value="Capua">Capua</option></select><br />
Diocesi Battesimo:<br />
<select name="diobat">
<option value="Venezia">Venezia</option>
<option value="Padova">Padova</option>
<option value="Parenzo">Parenzo</option>
<option value="Pola">Pola</option>
<option value="Portogruaro">Portogruaro</option>
<option value="Treviso">Treviso</option>
<option value="Mantua">Mantua</option>
<option value="Udine">Udine</option>
<option value="Genova">Genova</option>
<option value="Chiavari">Chiavari</option>
<option value="La Spezia">La Spezia</option>
<option value="Albenga">Albenga</option>
<option value="Ventimiglia">Ventimiglia</option>
<option value="Milano">Milano</option>
<option value="Como">Como</option>
<option value="Lodi">Lodi</option>
<option value="Alessandria">Alessandria</option>
<option value="Novara">Novara</option>
<option value="Savona">Savona</option>
<option value="Pavia">Pavia</option>
<option value="Firenze">Firenze</option>
<option value="Pistoia">Pistoia</option>
<option value="Montevarchi">Montevarchi</option>
<option value="Pisa">Pisa</option>
<option value="Volterra">Volterra</option>
<option value="Livorno">Livorno</option>
<option value="San Miniato">San Miniato</option>
<option value="Massa">Massa</option>
<option value="Siena">Siena</option>
<option value="Orbetello">Orbetello</option>
<option value="Grosseto">Grosseto</option>
<option value="Santa Fiora">Santa Fiora</option>
<option value="Piombino">Piombino</option>
<option value="Modena">Modena</option>
<option value="Mirandola">Mirandola</option>
<option value="Guestalla">Guestalla</option>
<option value="Parma">Parma</option>
<option value="Fornovo">Fornovo</option>
<option value="Piacenza">Piacenza</option>
<option value="L'Aquila">L'Aquila</option>
<option value="Arezzo">Arezzo</option>
<option value="Montepulciano">Montepulciano</option>
<option value="Teramo">Teramo</option>
<option value="Silvi">Silvi</option>
<option value="Chieti">Chieti</option>
<option value="Sulmona">Sulmona</option>
<option value="Avezzano">Avezzano</option>
<option value="Tagliacozzo">Tagliacozzo</option>
<option value="Terracina">Terracina</option>
<option value="Pontecorvo">Pontecorvo</option>
<option value="Capua">Capua</option>
<option value="Sessa Aurunca">Sessa Aurunca</option>
<option value="Gaeta">Gaeta</option></select><br />
<input type="submit" value="submit" name="submit">
</form>
<?
} else {
echo "Il nuovo fedele dell'Altissimo chiamato ".$nome.",<br />";
echo "dal ".$grado." <i>".$officiante."</i><br />";
echo "nella diocesi di ".$diobat.", facente parte dell'arcidiocesi di ".$arcibat.",<br />";
echo "il giorno ".$giorno." nel mese di ".$mese." dell'Anno di grazia ".$anno.".<br />";
}
?>

potete notare che ho inserito già $giorno $mese ed $anno perchè ho necessità che l'utente scelga la data desiderata.

ora mi serve la vostra saggezza perchè non so più dove mettere mani.

In pratica vorrei inserire nel form un campo di scelta data tipo menu a tendina o calendario cliccabile.

mi date una mano? :(
 
scusate se riposto ancora di seguito ai miei messaggi ma volevo aggiornarvi :)

sono riuscito ad inserire la data e anche a visualizzarla grazie ad un piccolo accorgimento javascript ed inserendo un paio di file nella cartella principale del mio sito.

ecco il codice

Codice:
<?php
$nome = $_POST["nome"];
$grado = $_POST["grado"];
$officiante = $_POST["officiante"];
$arcibat = $_POST["arcibat"];
$diobat = $_POST["diobat"];
$databat = $_POST["databat"];
if (!isset($_POST['submit'])) { // if page is not submitted to itself echo the form
?>
<html>
<head>
<title>Certificato Battesimo</title>
</head>
<body>
<form method="post" action="<?php echo $PHP_SELF;?>">
Nome Battezzato:<br />
<input type="text" size="12" maxlength="20" name="nome"><br />
Officiante Battesimo:<br />
<input type="text" size="12" maxlength="20" name="officiante"><br />
Grado Ecclesiale:<br />
<select name="grado">
<option value="Suddiacono">Suddiacono</option>
<option value="Diacono">Diacono</option>
<option value="Cappellano Nobiliare">College Nobiliare</option>
<option value="Vicario">Vicario</option>
<option value="Sacrestano">Sacrestano</option>
<option value="Parroco">Parroco</option>
<option value="Vicario Diocesano">Vicario Diocesano</option>
<option value="Vicario Generale">Vicario Generale</option>
<option value="Vescovo">Vescovo</option>
<option value="Arcivescovo">Arcivescovo</option>
<option value="Vice Primate">Vice Primate</option>
<option value="Primate">Primate</option>
<option value="Patriarca">Patriarca</option
<option value="Cadinale">Cardinale</option></select><br />
Arcidiocesi Battesimo:<br />
<select name="arcibat">
<option value="Aquileia">Aquileia</option>
<option value="Genova">Genova</option>
<option value="Milano">Milano</option>
<option value="Firenze">Firenze</option>
<option value="Pisa">Pisa</option>
<option value="Siena">Siena</option>
<option value="Ravenna">Ravenna</option>
<option value="Roma">Roma</option>
<option value="Capua">Capua</option></select><br />
Diocesi Battesimo:<br />
<select name="diobat">
<option value="Venezia">Venezia</option>
<option value="Padova">Padova</option>
<option value="Parenzo">Parenzo</option>
<option value="Pola">Pola</option>
<option value="Portogruaro">Portogruaro</option>
<option value="Treviso">Treviso</option>
<option value="Mantua">Mantua</option>
<option value="Udine">Udine</option>
<option value="Genova">Genova</option>
<option value="Chiavari">Chiavari</option>
<option value="La Spezia">La Spezia</option>
<option value="Albenga">Albenga</option>
<option value="Ventimiglia">Ventimiglia</option>
<option value="Milano">Milano</option>
<option value="Como">Como</option>
<option value="Lodi">Lodi</option>
<option value="Alessandria">Alessandria</option>
<option value="Novara">Novara</option>
<option value="Savona">Savona</option>
<option value="Pavia">Pavia</option>
<option value="Firenze">Firenze</option>
<option value="Pistoia">Pistoia</option>
<option value="Montevarchi">Montevarchi</option>
<option value="Pisa">Pisa</option>
<option value="Volterra">Volterra</option>
<option value="Livorno">Livorno</option>
<option value="San Miniato">San Miniato</option>
<option value="Massa">Massa</option>
<option value="Siena">Siena</option>
<option value="Orbetello">Orbetello</option>
<option value="Grosseto">Grosseto</option>
<option value="Santa Fiora">Santa Fiora</option>
<option value="Piombino">Piombino</option>
<option value="Modena">Modena</option>
<option value="Mirandola">Mirandola</option>
<option value="Guestalla">Guestalla</option>
<option value="Parma">Parma</option>
<option value="Fornovo">Fornovo</option>
<option value="Piacenza">Piacenza</option>
<option value="L'Aquila">L'Aquila</option>
<option value="Arezzo">Arezzo</option>
<option value="Montepulciano">Montepulciano</option>
<option value="Teramo">Teramo</option>
<option value="Silvi">Silvi</option>
<option value="Chieti">Chieti</option>
<option value="Sulmona">Sulmona</option>
<option value="Avezzano">Avezzano</option>
<option value="Tagliacozzo">Tagliacozzo</option>
<option value="Terracina">Terracina</option>
<option value="Pontecorvo">Pontecorvo</option>
<option value="Capua">Capua</option>
<option value="Sessa Aurunca">Sessa Aurunca</option>
<option value="Gaeta">Gaeta</option></select><br />
Data battesimo:<br />
<script language="javascript" type="text/javascript" src="datetimepicker.js">

//Date Time Picker script- by TengYong Ng of http://www.rainforestnet.com
//Script featured on JavaScript Kit (http://www.javascriptkit.com)
//For this script, visit http://www.javascriptkit.com 

</script>

<input id="demo1" type="text" size="25" name="databat"><a href="javascript:NewCal('demo1','ddmmyyyy')"><img src="http://forum.it.altervista.org/images/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a><br /><br />

<input type="submit" value="submit" name="submit">
</form>
<?
} else {
echo "Il nuovo fedele dell'Altissimo chiamato ".$nome.",<br />";
echo "dal ".$grado." <i>".$officiante."</i><br />";
echo "nella diocesi di ".$diobat.", facente parte dell'arcidiocesi di ".$arcibat.",<br />";
echo "in data ".$databat.".<br />";
}
?>

mi potete dire adesso come poter inserire questa immagine come sfondo dopo l'invio del form?

http://i39.tinypic.com/1zgdi07.jpg

ed inoltre come centrare il testo con i dati del form cambiandogli anche colore,font e grandezza per ottenere questo:

http://i55.tinypic.com/1h8j9l.jpg
 
Non saprei perchè il watermark è un'immagine da quanto ho capito a me invece è un testo da renderizzare e centrare sull'immagine di sfondo.
 
ciao e grazie per la risposta :)

dopo tantissmo travagliare e pensare sono arrivato ad una soluzione quasi finale.

ho raggiunto un ottimo risultato come potrai vedere dalla mia pagina una volta compilato il form

http://virgus87.altervista.org/index.php?option=com_jumi&fileid=3&Itemid=241

ecco il codice modificato:

Codice:
<?php
$nome = $_POST["nome"];
$grado = $_POST["grado"];
$officiante = $_POST["officiante"];
$arcibat = $_POST["arcibat"];
$diobat = $_POST["diobat"];
$databat = $_POST["databat"];
if (!isset($_POST['submit'])) { // if page is not submitted to itself echo the form
?>
<html>
<head>
<title>Certificato Battesimo</title>
</head>
<body>
<form action="process.php" method="post" target="foo" onsubmit="window.open('', 'foo', 'width=520,height=620,status=yes,resizable=yes,scrollbars=yes')">
Nome Battezzato:<br />
<input type="text" size="12" maxlength="20" name="nome"><br />
Officiante Battesimo:<br />
<input type="text" size="12" maxlength="20" name="officiante"><br />
Grado Ecclesiale:<br />
<select name="grado">
<option value="Suddiacono">Suddiacono</option>
<option value="Diacono">Diacono</option>
<option value="Cappellano Nobiliare">College Nobiliare</option>
<option value="Vicario">Vicario</option>
<option value="Sacrestano">Sacrestano</option>
<option value="Parroco">Parroco</option>
<option value="Vicario Diocesano">Vicario Diocesano</option>
<option value="Vicario Generale">Vicario Generale</option>
<option value="Vescovo">Vescovo</option>
<option value="Arcivescovo">Arcivescovo</option>
<option value="Vice Primate">Vice Primate</option>
<option value="Primate">Primate</option>
<option value="Patriarca">Patriarca</option
<option value="Cadinale">Cardinale</option></select><br />
Arcidiocesi Battesimo:<br />
<select name="arcibat">
<option value="Aquileia">Aquileia</option>
<option value="Genova">Genova</option>
<option value="Milano">Milano</option>
<option value="Firenze">Firenze</option>
<option value="Pisa">Pisa</option>
<option value="Siena">Siena</option>
<option value="Ravenna">Ravenna</option>
<option value="Roma">Roma</option>
<option value="Capua">Capua</option></select><br />
Diocesi Battesimo:<br />
<select name="diobat">
<option value="Venezia">Venezia</option>
<option value="Padova">Padova</option>
<option value="Parenzo">Parenzo</option>
<option value="Pola">Pola</option>
<option value="Portogruaro">Portogruaro</option>
<option value="Treviso">Treviso</option>
<option value="Mantua">Mantua</option>
<option value="Udine">Udine</option>
<option value="Genova">Genova</option>
<option value="Chiavari">Chiavari</option>
<option value="La Spezia">La Spezia</option>
<option value="Albenga">Albenga</option>
<option value="Ventimiglia">Ventimiglia</option>
<option value="Milano">Milano</option>
<option value="Como">Como</option>
<option value="Lodi">Lodi</option>
<option value="Alessandria">Alessandria</option>
<option value="Novara">Novara</option>
<option value="Savona">Savona</option>
<option value="Pavia">Pavia</option>
<option value="Firenze">Firenze</option>
<option value="Pistoia">Pistoia</option>
<option value="Montevarchi">Montevarchi</option>
<option value="Pisa">Pisa</option>
<option value="Volterra">Volterra</option>
<option value="Livorno">Livorno</option>
<option value="San Miniato">San Miniato</option>
<option value="Massa">Massa</option>
<option value="Siena">Siena</option>
<option value="Orbetello">Orbetello</option>
<option value="Grosseto">Grosseto</option>
<option value="Santa Fiora">Santa Fiora</option>
<option value="Piombino">Piombino</option>
<option value="Modena">Modena</option>
<option value="Mirandola">Mirandola</option>
<option value="Guestalla">Guestalla</option>
<option value="Parma">Parma</option>
<option value="Fornovo">Fornovo</option>
<option value="Piacenza">Piacenza</option>
<option value="L'Aquila">L'Aquila</option>
<option value="Arezzo">Arezzo</option>
<option value="Montepulciano">Montepulciano</option>
<option value="Teramo">Teramo</option>
<option value="Silvi">Silvi</option>
<option value="Chieti">Chieti</option>
<option value="Sulmona">Sulmona</option>
<option value="Avezzano">Avezzano</option>
<option value="Tagliacozzo">Tagliacozzo</option>
<option value="Terracina">Terracina</option>
<option value="Pontecorvo">Pontecorvo</option>
<option value="Capua">Capua</option>
<option value="Sessa Aurunca">Sessa Aurunca</option>
<option value="Gaeta">Gaeta</option></select><br />
Data battesimo:<br />
<script language="javascript" type="text/javascript" src="datetimepicker.js">

//Date Time Picker script- by TengYong Ng of http://www.rainforestnet.com
//Script featured on JavaScript Kit (http://www.javascriptkit.com)
//For this script, visit http://www.javascriptkit.com 

</script>

<input id="demo1" type="text" size="25" name="databat"><a href="javascript:NewCal('demo1','ddmmyyyy')"><img src="http://virgus87.altervista.org/images/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a><br /><br />

<input type="submit" value="submit" name="submit">
</form>
<?
} else {
echo "Il nuovo fedele dell'Altissimo chiamato ".$nome.",<br />";
echo "dal ".$grado." <i>".$officiante."</i><br />";
echo "nella diocesi di ".$diobat.", facente parte dell'arcidiocesi di ".$arcibat.",<br />";
echo "in data ".$databat.".<br />";
}
?>


inoltre ho inserito nella cartella principale del mio sito il file process.php con questo codice che però mi da ancora un problema non riesco ad inserire il font che desidero per il testo (infatti come potrai leggere avrò fatto qualche casotto nell'inserimento della voce fontface :P):
:

<html>
<body>
<div id="container">
<p id="dichiarazione"> Il nuovo fedele dell'Altissimo chiamato <?php echo $_POST["nome"]; ?> ha ricevuto il sacramento del battesimo,<br />
dal <?php echo $_POST["grado"];?> <?php echo $_POST["officiante"]; ?><br />
nella diocesi di <?php echo $_POST["diobat"];?>, facente parte dell'arcidiocesi di <?php echo $_POST["arcibat"]; ?>,<br />
in data <?php echo $_POST["databat"]; ?>.<br />
<p>
</div>

<style type="text/css">
div#container {background:url("http://i39.tinypic.com/1zgdi07.jpg") no-repeat scroll center top #FFFFFF; width: 500; height: 600;}
p#dichiarazione{text-align:center; font-size:1.2em; position:relative; top: 350;}

@font-face {
font-family: "Kimberley";
src: url(http://www.princexml.com/fonts/larabie/kimberle.ttf) format("truetype");
}
h1 { font-family: "Kimberley", sans-serif }
}
</style>

</body>
</html>

potresti aiutarmi a capire come far visualizzare il testo con il font desiderato?

e cosa più importante come poter fondere testo e sfondo per permettere all'utente di salvare il tutto come immagine?
 
Per quanto riguarda il font-face non vedo errori, l'url è giusta, se vuoi fondere testo e sfondo non puoi farlo così, devi utilizzare le GD2 come nell'esempio che ti ho linkato.
 
Grazie per la risposta :)

Ho trovato questo script in giro per il web che afferma di poter trasformare un testo in un'immagine.
Può essere utile per trasformare il testo in immagine e dire inoltre allo script di prendere come sfondo quello della pergamena?

Codice:
<?php
/**
 * Class for converting Text to Image.
 * Font type can be specified
 * The alignment where the text will echo can also be set.
 *
 * @compiled Subesh Pokhrel from PHP.net and PHPclasses.org
 *
 */
define("ALIGN_LEFT", "left");
define("ALIGN_CENTER", "center");
define("ALIGN_RIGHT", "right");

class TextToImage {

	private $im;

	/**
	 * @name 				   : makeImageF
	 *
	 * Function for create image from text with selected font.
	 *
	 * @param String $text     : String to convert into the Image.
	 * @param String $font     : Font name of the text.
	 * @param int    $W        : Width of the Image.
	 * @param int    $H        : Hight of the Image.
	 * @param int	 $X        : x-coordinate of the text into the image.
	 * @param int    $Y        : y-coordinate of the text into the image.
	 * @param int    $fsize    : Font size of text.
	 * @param array  $color	   : RGB color array for text color.
	 * @param array  $bgcolor  : RGB color array for background.
	 *
	 */
	public function makeImageF($text, $font="CENTURY.TTF", $W=800, $H=200, $X=0, $Y=0, $fsize=18, $color=array(0x0,0x0,0x0), $bgcolor=array(0xFF,0xFF,0xFF)){

		$this->im = @imagecreate($W, $H)
		or die("Cannot Initialize new GD image stream");

		$background_color = imagecolorallocate($this->im, $bgcolor[0], $bgcolor[1], $bgcolor[2]);		//RGB color background.
		$text_color = imagecolorallocate($this->im, $color[0], $color[1], $color[2]);			//RGB color text.

		$this->imagettftextbox($this->im, $fsize,0, $X,$Y, $text_color, $font, $text,800);
	}

	/**
	* This function works to set alignment in image and write image.
	*/
	public function imagettftextbox(&$image, $size, $angle, $left, $top, $color, $font, $text, $max_width)
	{
		$text_lines = explode("\n", $text); // Supports manual line breaks!

		$lines = array();
		$line_widths = array();

		$largest_line_height = 0;

		foreach($text_lines as $block)
		{
			$current_line = ''; // Reset current line
			$align=ALIGN_CENTER; // Setting Alignment
			$words = explode(' ', $block); // Split the text into an array of single words

			$first_word = TRUE;

			$last_width = 0;

			for($i = 0; $i < count($words); $i++)
			{
				$item = $words[$i];
				$dimensions = imagettfbbox($size, $angle, $font, $current_line . ($first_word ? '' : ' ') . $item);
				$line_width = $dimensions[2] - $dimensions[0];
				$line_height = $dimensions[1] - $dimensions[7];

				if($line_height > $largest_line_height) $largest_line_height = $line_height;

				if($line_width > $max_width && !$first_word)
				{
					$lines[] = $current_line;

					$line_widths[] = $last_width ? $last_width : $line_width;

					/*if($i == count($words))
					 {
					 continue;
					 }*/

					$current_line = $item;
				}
				else
				{
					$current_line .= ($first_word ? '' : ' ') . $item;
				}

				if($i == count($words) - 1)
				{
					$lines[] = $current_line;

					$line_widths[] = $line_width;
				}

				$last_width = $line_width;

				$first_word = FALSE;
			}

			if($current_line)
			{
				$current_line = $item;
			}
		}

		$i = 0;
		foreach($lines as $line)
		{
			if($align == ALIGN_CENTER)
			{
				$left_offset = ($max_width - $line_widths[$i]) / 2;
			}
			elseif($align == ALIGN_RIGHT)
			{
				$left_offset = ($max_width - $line_widths[$i]);
			}
			imagettftext($image, $size, $angle, $left + $left_offset, $top + $largest_line_height + ($largest_line_height * $i), $color, $font, $line);
			$i++;
		}

		return $largest_line_height * count($lines);
	}

	/**
	 * @name showAsPng
	 *
	 * Function to show text as Png image.
	 *
	 */
	public function showAsPng(){

		header("Content-type: image/png");
		return imagepng($this->im);
	}

}
?>

Save this file as TextToImage.class.php.

And then use this code to call the classes instance.

Codice:
<?php
/** Downloaded from PHP classes
* Please note that KORONG.TTF font file should be present to run the code.
*/

ini_set("display_errors",1);
require_once('TextToImage.class.php');
$_im = new TextToImage();
$_im->makeImageF("Thank you ! Subesh Pokhrel \n subesh.com.np","KORONG.TTF");
$_im->showAsPng();
?>

Si può fare?
 

Discussioni simili