Hilfe bei Grafikgenerator-Formular benötigt

neij

Grünschnabel
Hallo,
ich bin dabei mich mit PHP zu beschäftigen, bisher habe ich allerdings nur gute Kenntnisse in HTML. Als Ziel für mein erstes PHP-Projekt habe ich mir vorgenommen, ein Grafikgenerator zu erstellen, bei dem durch die vom User eingegebenen Daten ein GIF erzeugt wird. Das ist mir dann nach etlichen Tagen und viel lesen auch gelungen, nun wollte ich das ganze Projekt noch erweitern. Mein Ziel ist es nun, dass sich die Grafik nahezu in "Echtzeit" an die Eingaben anpasst und das durch die Größeneingabe (die Größe der Grafik muss sich nicht verändern) automatisch ein Preis ermittelt wird. Das Problem was ich habe ist, dass sich die Grafik zwar ändert, aber die Werte alle nicht erhalten bleiben und das alles dabei ziemlich chaotisch wird. Außerdem klappt das mit der Größeneingabe nicht, die Länge soll sich automatisch durch die Höhe ergeben und anders rum. Ich habe tagelang gegooglet und stehe voll auf dem Schlauch, vielleicht könnt Ihr mir auf die Sprünge helfen?

Gruß,
Laura

Hier die Codes:

bildformular.php
PHP:
<html>
<head>
</head>
<body>

<?php
session_start();
$mytext=$_GET['meintextform'];
$schriftfarbe=$_GET['color'];
$schriftart=$_GET['font'];
$text_width = $_GET['textlänge'];
$text_height = $_GET['texthöhe'];
//$grafikpreis = $_GET['preis'];


if(isset($mytext)){print '<img src="textzubild.php?meintextform=' . $mytext . '&color=' . $schriftfarbe . '&font=' . $schriftart . '&textlänge=' . $text_width .'&texthöhe=' . $text_height .'">';}



?>
<br>
<br>
<table width="654" border="1" align="center" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
<tr>
<td align='center'><b><h2>Wähle einen Text aus.</h2></b></td>
</tr>
</table>
<table width="650" border="1" align="center" cellpadding="0" cellspacing="1" bgcolor="#ffffff">
<tr>
<form name="form" method="get" action="bildformular.php">
<td>
<table width="650" border="0" cellpadding="3" cellspacing="1" bgcolor="#ffffff">
<tr>
<td><b>Bildausgabe:</b></td>
</tr>
<tr>
<td><input name="meintextform" type="text" size="100" maxlength="100" value="<?php echo ($_SESSION['meintextform']); ?>" onChange="this.form.submit()"></td>
</tr>
<tr>
<td>
Schriftart auswählen:
    <p>
    <input type="radio" name="color" value="color1" onClick="this.form.submit()" <?php if($_SESSION['color']=='color1') echo 'checked="checked"'; else echo 'checked="checked"' ?>>weiss<br>
    <input type="radio" name="color" value="color2" onClick="this.form.submit()" <?php if($_SESSION['color']=='color2') echo 'checked="checked"'; ?>>rot<br>
    <input type="radio" name="color" value="color3" onClick="this.form.submit()" <?php if($_SESSION['color']=='color3') echo 'checked="checked"'; ?>>blau
    </p>
  <br>
  Schriftfarbe auswählen:
    <p>
    <input type="radio" name="font" value="Agate Bold" onClick="this.form.submit()" <?php if($_SESSION['font']=='Agate Bold') echo 'checked="checked"'; else echo 'checked="checked"' ?>>Agate Bold<br>
    <input type="radio" name="font" value="AirstreamNF" onClick="this.form.submit()" <?php if($_SESSION['font']=='AirstreamNF') echo 'checked="checked"'; ?>>AirstreamNF<br>
    <input type="radio" name="font" value="Allegro_BT" onClick="this.form.submit()" <?php if($_SESSION['font']=='Allegro_BT') echo 'checked="checked"'; ?>>Allegro_BT
    </p>
  <br>
  Größe des Schriftzugs in cm:
    <p>
    Länge:
    <input name="textlänge" type="text" size="7" maxlength="3" value="<?php echo ($_SESSION['grafiklänge']); ?>" onChange="this.form.submit()">cm<br>
    Höhe:
    <input name="texthöhe" type="text" size="7" maxlength="3" value="<?php echo ($_SESSION['grafikhöhe']); ?>" onChange="this.form.submit()">cm
    </p>
  <br>
  Gespiegelte Grafik:
    <p>
    <input type="checkbox" name="gespiegelt" value="gespiegelt"> gespiegelt<br> <!--Wie spiegelt man GIF...? -->
  </p>
  <br>
  Preis:
  <p>
  <input type="hidden" name="preis" value="<?php echo ($_SESSION['preis']); ?>">  EURO
  </p>
  <br>
</td>
</tr>
<tr>
<td><input type="submit" name="save_form" value="Submit"> <input type="reset" name="save_form" value="Reset"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
</body>
</html>

textzubild.php
PHP:
<?php
session_start();
header("Content-type: image/gif");
$mytext = $_GET['meintextform'];
$schriftfarbe = $_GET['color'];
$schriftart = $_GET['font'];
$text_width = $_GET['textlänge'];
$text_height = $_GET['texthöhe'];
//$grafikpreis = $_GET['preis'];


$_SESSION['meintextform'] = $_GET['meintextform'];    //SESSIONS bekommen erst richtigen value nach refresh, nicht nach submit.
$_SESSION['color'] = $_GET['color'];  
$_SESSION['font'] = $_GET['font'];  
$_SESSION['textlänge'] = $_GET['textlänge'];  
$_SESSION['texthöhe'] = $_GET['texthöhe'];
//$_SESSION['preis'] = $_GET['preis']

// hier kommen die Schriftarten hin:
  $font = '';
switch ($schriftart) {
    case "Agate Bold":
    $font = './Agate Bold.ttf';
    break;
    case "AirstreamNF":
    $font = './AirstreamNF.ttf';
    break;
    case "Allegro_BT":
    $font = './Allegro_BT.ttf';
    break;
};
  $fontsize = 36;
  $angle = 0;
  $bg_size = imagettfbbox($fontsize, $angle, $font, $mytext);
  $width = (abs($bg_size[4] - $bg_size[0]) + 60);
  $height = (abs($bg_size[5] - $bg_size[1]) + 40);
  $pos_x = 30;
  $pos_y = (($height / 2) + 18) ;
  $picture = imagecreate($width, $height);
  $bg_color = imagecolorallocate($picture, 255, 255, 127);
// Hier wird die Textfarbe ausgewählt:
  $textcolor = '';
switch ($schriftfarbe) {
    case "color1":
    $textcolor = imagecolorallocate($picture,255,255,255);
    break;
    case "color2":
    $textcolor = imagecolorallocate($picture,255,0,2);
    break;
    case "color3":
    $textcolor = imagecolorallocate($picture,2,0,255);
    break;
};
  imagefill($picture, 0, 0, $bg_color);
  imagettftext($picture, $fontsize,$angle,$pos_x,$pos_y, $textcolor, $font, $mytext);




imagegif($picture);
imagegif($picture,"1bildausgabe.gif");
imagedestroy($picture);

// Größenberechnung grafik
  $grafikverhältnis = ($width / $height); // Für Berechnung mit der Eingabe der Grafikmaße.

//Rechnung funktioniert noch nicht wie gewollt!!! Eingegebener Wert muss erhalten bleiben, anderer ausgerechnet werden (if else?)
  $grafiklänge = ($text_height * $grafikverhältnis); //automatische Grafiklänge, wenn nur Höhe angegeben wurde
  $_SESSION['grafiklänge'] = $grafiklänge;
  //$_SESSION['grafiklänge'] = $text_width;
  $grafikhöhe = ($text_width / $grafikverhältnis);    //automatische Grafikhöhe, wenn nur Länge angegeben wurde
  $_SESSION['grafikhöhe'] = $grafikhöhe;

// Preisberechnung:

/*  $grafikgröße = ($grafiklänge + $grafikhöhe)
  $grafikpreis = '';
    //$_SESSION['grafikpreis'] = $grafikpreis
  if ( $grafikgröße <= 50 )        
     { $grafikpreis = "1,00 Euro"; }
  elseif ($grafikgröße <= 1000)     
     { $grafikpreis = "2,00 Euro"; }
  elseif ($grafikgröße <= 2000)
     { $grafikpreis = "3,00 Euro"; }       
else
     { $grafikpreis = "Der Grafik ist zu groß."; };

*/
      



?>
 
Zuletzt bearbeitet:
Hier hab ich viele Fehler gefunden, geändert und beschriftet.

Diese Fehler bestehen noch in der 2. Datei. Die erste funktioniert bei mir schon mal fehlerfrei, so wie es den anschein hat, aber ohne der Fehlerbehebung der 2. Datei habe ich noch kein funktionierendes Ergebnis bekommen.

PHP:
<html>
<head>
</head>
<body>
<?php
session_start();
//FEHLER: GET, POST, SESSION, VARIABLEN, ARRAY´s bei denen du nicht weißt,
//ob Sie bereits existrieren, sollten erst überprüft werden, ob dies der Fall ist,
//wenn nicht, sollte mann die dabei entstehenden dinge erstmal z.b. auf NULL setzen, damit sie existieren
//FEHLER2: keine öäüß bei dem Name-Attribut und dem daraus entstehendem Array-Key, Variablen etc.
if(isset($_GET['meintextform'])){
  $mytext=$_GET['meintextform'];
}else{
  $mytext = NULL;
}
if(isset($_GET['color'])){
  $schriftfarbe=$_GET['color'];
}else{
  $schriftfarbe = NULL;
}
if(isset($_GET['font'])){
  $schriftart=$_GET['font'];
}else{
  $schriftart = NULL;
}
if(isset($_GET['textlaenge'])){
  $text_width = $_GET['textlaenge'];
}else{
  $text_width = NULL;
}
if(isset($_GET['texthoehe'])){
  $text_height = $_GET['texthoehe'];
}else{
  $text_height = NULL;
}
//$grafikpreis = $_GET['preis'];
if(isset($mytext)){print '<img src="textzubild.php?meintextform=' . $mytext . '&color=' . $schriftfarbe . '&font=' . $schriftart . '&textlänge=' . $text_width .'&texthöhe=' . $text_height .'">';}
?>
<br>
<br>
<table width="654" border="1" align="center" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
<tr>
<td align='center'><b><h2>Wähle einen Text aus.</h2></b></td>
</tr>
</table>
<table width="650" border="1" align="center" cellpadding="0" cellspacing="1" bgcolor="#ffffff">
<tr>
<form name="form" method="get" action="bildformular.php">
<td>
<table width="650" border="0" cellpadding="3" cellspacing="1" bgcolor="#ffffff">
<tr>
<td><b>Bildausgabe:</b></td>
</tr>
<tr><!--FEHLER: Klammer um die Session, welche ich durch die Variable ersetzt habe, da die Session erst später erstellt wird.-->
<td><input name="meintextform" type="text" size="100" maxlength="100" value="<?php echo $mytext ?>" onChange="this.form.submit()"></td>
</tr>
<tr>
<td>
Schriftart auswählen:
    <p>
    <!--FEHLER: Session, welche ich durch die Variable ersetzt habe, da die Session erst später erstellt wird.-->
    <input type="radio" name="color" value="color1" onClick="this.form.submit()" <?php if($schriftfarbe=='color1'){ echo 'checked="checked"'; }else{ echo 'checked="checked"';} ?>>weiss<br>
    <input type="radio" name="color" value="color2" onClick="this.form.submit()" <?php if($schriftfarbe=='color2'){ echo 'checked="checked"';} ?>>rot<br>
    <input type="radio" name="color" value="color3" onClick="this.form.submit()" <?php if($schriftfarbe=='color3'){ echo 'checked="checked"';} ?>>blau
    </p>
  <br>
  Schriftfarbe auswählen:
    <p>
    <!--FEHLER: Session, welche ich durch die Variable ersetzt habe, da die Session erst später erstellt wird.-->
    <input type="radio" name="font" value="Agate Bold" onClick="this.form.submit()" <?php if($schriftart=='Agate Bold'){ echo 'checked="checked"'; }else{ echo 'checked="checked"';} ?>>Agate Bold<br>
    <input type="radio" name="font" value="AirstreamNF" onClick="this.form.submit()" <?php if($schriftart=='AirstreamNF'){ echo 'checked="checked"';} ?>>AirstreamNF<br>
    <input type="radio" name="font" value="Allegro_BT" onClick="this.form.submit()" <?php if($schriftart=='Allegro_BT'){ echo 'checked="checked"';} ?>>Allegro_BT
    </p>
  <br>
  Größe des Schriftzugs in cm:
    <p>
    Länge:
    <!--FEHLER: Klammer um die Session, welche ich durch die Variable ersetzt habe, da die Session erst später erstellt wird.-->
    <!--FEHLER2: keine öäüß bei dem Name-Attribut und dem daraus entstehendem Array-Key-->
    <input name="textlaenge" type="text" size="7" maxlength="3" value="<?php echo $text_width; ?>" onChange="this.form.submit()">cm<br>
    Höhe:
    <!--FEHLER: Klammer um die Session, welche ich durch die Variable ersetzt habe, da die Session erst später erstellt wird.-->
    <!--FEHLER2: keine öäüß bei dem Name-Attribut und dem daraus entstehendem Array-Key-->
    <input name="texthoehe" type="text" size="7" maxlength="3" value="<?php echo $text_height; ?>" onChange="this.form.submit()">cm
    </p>
  <br>
  Gespiegelte Grafik:
    <p>
    <input type="checkbox" name="gespiegelt" value="gespiegelt"> gespiegelt<br> <!--Wie spiegelt man GIF...? -->
  </p>
  <br>
  Preis:
  <p>
  <input type="hidden" name="preis" value="<?php echo ($_SESSION['preis']); ?>">  EURO
  </p>
  <br>
</td>
</tr>
<tr>
<td><input type="submit" name="save_form" value="Submit"> <input type="reset" name="save_form" value="Reset"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
</body>
</html>

EDIT: Warum dürfen die Daten der Session nicht sofort geändert werden? Denn wenn dies der Fall wäre, wärde ich dir eine 3. Datei empfehlen, welche in beiden Dateien eingebunden ist und die Werte überprüft und die Variablen erstellt.
 
Hallo Matze,

vielen, vielen Dank für deine ausführliche Hilfe, Du hast mir sehr geholfen die Fehler und die Korrekturen nachzuvollziehen.
Leider verstehe ich nicht was Du mit deinem EDIT meinst?
Lässt sich die Größenberechnung überhaupt so einfach mit PHP lösen?

Lieben Gruß,
Laura
 
Das EDIT ist nur ein Textmarker, dass ich dies nach meinem posten eingefügt habe, um dass du erkennen kannst, falls du vor dem einfügen der Ergänzung, dies bereits gelesen hattest, dass etwas noch hinzugefügt wurde.

getimagesize() hilft dir bestimmt bei der Berechnung der Bildgröße.
 
Das EDIT ist nur ein Textmarker, dass ich dies nach meinem posten eingefügt habe, um dass du erkennen kannst, falls du vor dem einfügen der Ergänzung, dies bereits gelesen hattest, dass etwas noch hinzugefügt wurde.

getimagesize() hilft dir bestimmt bei der Berechnung der Bildgröße.
Danke Matze, was EDIT bedeutet weiß ich natürlich, nur deinen hinzugefügten Text unter dem EDIT verstehe ich nicht ganz... :)

Ich brauche nicht unbedingt die Bildgröße, sondern das Seitenverhältnis, welches ich durch die Variabeln height und width schon errechnen kann.

Was ich möchte ist, dass wenn ich einen Wert in das Feld Texthöhe eingebe, dieser Wert erhalten bleiben soll, sich aber unabhängig vom aktuellen Wert im Feld Textlänge ein neuer Wert (Texthöhe x Seitenverhältnis) im Feld Textlänge ausgegeben werden soll.
Also angenommen das Seitenverhältnis hat den Wert 2 und im Feld Texthöhe wird der Wert 5 eingegeben aber im Feld Textlänge steht noch der alte Wert 1,5, dann soll der neue Wert im ersten Feld erhalten bleiben (5), aber der Wert 1,5 soll nicht übermittelt werden, sondern soll den neuen Wert aus Feld 1 und dem Wert des Seitenverhältnis (2) erhalten, sprich es soll der Wert 10 im Feld 2 erscheinen.
Das ganze sollte in beiden Feldern funktionieren, also es soll immer der zuletzt eingetippte Wert erhalten bleiben und der andere berechnet werden.

Ich weiß, dass es sich etwas kompliziert anhört und ich hoffe ich habe meine Vorstellung nicht zu verwirrend wiedergegebenen, sodass man mir folgen kann :D

Lieben Gruß,
Laura
 
Ich würde mir, an deiner stelle keine Gedanken um die alten Werte machen, sondern bei der Auswertung des Formulars immer neu ermitteln lassen, so dass es eventuell nicht mal Anpassungsfehler geben wird.

Also die Daten welche du ausgewärtet hast, zwar schon wieder mit an das Formular senden, aber danach neu ermitteln lassen.

Und nun nochmal zu dem Edit:
Die 3. Datei bindest du am besten mit require_once in beide Dateien ein oder du schaltest noch eine 4. Datei vor, was es noch etwas eleganter macht, welche die entsprechende der beiden Dateien lädt und dazu nur die 3. Datei einmal eingebunden ist.

Dort fügst du dann Funktionen wie diese ein:
PHP:
function get_check(){
    if(isset($_GET)){
        return $_GET;
    }else{
        return false;
    }
}

Diese rufst du bei 3 Dateien-Version aus beiden anderen Dateien am Anfang, aber nach der Funktionsdatei auf oder bei der 4 Dateien-Version vor dem öffnen der beiden anderen Dateien, aber nach dem öffnen der Funktionsdatei, mit folgendem Code auf.
PHP:
$get_check = get_check();
EDIT: Dies kannst du nur verwenden, wenn du dir sicher bist, dass die $_GET immer die entsprechenden Daten besitzt, wenn nicht, dann musst du noch ne Erweiterung der Funktion machen, dass die Bedürfnisse des Array´s erfüllt werden.

Dann kannst du folgendes und vieles mehr löschen:
PHP:
if(isset($_GET['meintextform'])){
  $mytext=$_GET['meintextform'];
}else{
  $mytext = NULL;
}
if(isset($_GET['color'])){
  $schriftfarbe=$_GET['color'];
}else{
  $schriftfarbe = NULL;
}
if(isset($_GET['font'])){
  $schriftart=$_GET['font'];
}else{
  $schriftart = NULL;
}
if(isset($_GET['textlaenge'])){
  $text_width = $_GET['textlaenge'];
}else{
  $text_width = NULL;
}
if(isset($_GET['texthoehe'])){
  $text_height = $_GET['texthoehe'];
}else{
  $text_height = NULL;
}

Und ersetzt alle betroffenen Variablen, welche reine $_GET-Werte haben, durch z.B. $get_check['color'], $get_check['font'] etc.

Dies kannst du auch gleich dort tun, wo sie ihre Anwendung finden.

Ist viel Arbeit, aber es wird sich lohnen, da du damit vieles zwischen HTML und PHP vereinheitlichst.

Die Funktion kannst du dann natürlich noch modifizieren, überprüfen lassen, wenn du irgendwelche Vorgaben haben wirst, welche du vielleicht auch in der Datenbank hast. Aber das solltest du dann auf mehrere Funktionen aufteilen und bitte keine MySQL-Befehle (veraltet) nehmen, sondern die neueren MySQLi- oder PDO-Befehle, mit Statements für von außen kommende oder noch ungewisse Daten verwenden, bei denen du nicht zu 100% sicher sein kannst, dass da kein unsicherer Code drin steckt.

So dass ist erstmal bissel viel, aber wenn du weitere Fragen hast, dann frage ruhig.

Gruß Matze202.
 
Hallo Matze,

ich habe mich nun nach einer längeren Pause mal wieder mit meinem Script auseinander gesetzt.
Ich muss gesestehen, dass ich deinen letzten Beitrag, nicht ganz verstehe, bzw. nicht genau weiß, wie ich es umsetzten soll.

Ich habe derzeit noch weitere offene Bausetellen, bei denen ich nicht weiter komme...
Da wäre nach wie vor das Problem, dass wenn ich das Bildmaß berechne, der Session-Wert erst dann richtig ist, wenn ich die formular.php Seite aktualisiere. Ein neues Problem ist, mir ist aufgefallen, dass es wenn ich bei der Texteingabe Zeichen wie # oder " eingebe, die Values scheinbar nicht am verarbeiten.php Script ankommen und das GIF nicht ausgegeben wird. Ich habe schon einige Varianten mit "htmlentities()" durchprobiert, allerdings ohne jeglichen Erfolg.
Des Weiteren habe ich bei einem anderen Generator auf einer Webseite mal gesehen, dass die Grafik gespiegelt werden kann, funktioniert sowas mit php?

Mit der Sicherheit von Formularen habe ich mich bisher noch recht wenig beschäftigt, dass werde ich dann später auf jeden Fall gründlich ansehen.

formular.php
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Grafikgenerator</title>
</head>

<body>
<?php
session_start();
if(isset($_GET['meintextform'])){
  $mytext=$_GET['meintextform'];
}else{
  $mytext = 'Hier geben Sie Ihren Wunschtext ein.';
}
if(isset($_GET['colorfont'])){
  $schriftfarbe=$_GET['colorfont'];
}else{
  $schriftfarbe = 'color1';
}
if(isset($_GET['font'])){
  $schriftart=$_GET['font'];
}else{
  $schriftart = 'Agate Bold';
}
if(isset($_GET['color'])){
  $hintergrund = $_GET['color'];
}else{
  $hintergrund = '#c6ea9e';
}

{print '<img src="verarbeitung.php?meintextform=' . $mytext . '&colorfont=' . $schriftfarbe . '&font=' . $schriftart . '&color=' . $hintergrund .'">';}
?>
<br>
Seitenverhältnis: 1 zu 
<!-- Seitenverhältniss Grafik ausrechnen, funktioniert erst bei reload. -->
<?php
$image_size = getimagesize('1bildausgabe.gif');
$image_width = $image_size[0];
$image_height = $image_size[1];
$seitenverhaeltniss = ($image_width / $image_height);
echo $seitenverhaeltniss;
?>   
   
<br>
<hr>
<form name="form" method="get" action="bildformular.php">

<!-- Texteingabe -->
<!-- Sonderzeichen wie # oder " werden nicht übermittelt, GIF wird nicht angezeigt -->
<input name="meintextform" type="text" size="100" maxlength="100" value="<?php print htmlentities($mytext); ?>" onChange="this.form.submit()">

<br>
<!-- Schriftfarbe auswählen -->
<p>
Schriftart:
<br>
    <input type="radio" name="colorfont" value="color1" onClick="this.form.submit()" <?php if($schriftfarbe=='color1'){ echo 'checked="checked"'; }else{ echo 'checked="checked"';} ?>>weiss<br>
    <input type="radio" name="colorfont" value="color2" onClick="this.form.submit()" <?php if($schriftfarbe=='color2'){ echo 'checked="checked"';} ?>>rot<br>
    <input type="radio" name="colorfont" value="color3" onClick="this.form.submit()" <?php if($schriftfarbe=='color3'){ echo 'checked="checked"';} ?>>blau
</p>
<hr>
 
 
<!-- Schriftfarbe auswählen -->
<p>
Schriftfarbe:
<br>
    <input type="radio" name="font" value="Agate Bold" onClick="this.form.submit()" <?php if($schriftart=='Agate Bold'){ echo 'checked="checked"'; }else{ echo 'checked="checked"';} ?>>Agate Bold<br>
    <input type="radio" name="font" value="AirstreamNF" onClick="this.form.submit()" <?php if($schriftart=='AirstreamNF'){ echo 'checked="checked"';} ?>>AirstreamNF<br>
    <input type="radio" name="font" value="Allegro_BT" onClick="this.form.submit()" <?php if($schriftart=='Allegro_BT'){ echo 'checked="checked"';} ?>>Allegro_BT
</p>
<hr>


<!-- Grakfik spiegeln -->
<!--Wie spiegelt man GIF...? -->
<p>
      Grafik spiegeln? <input type="checkbox" name="gespiegelt" value="gespiegelt">
</p>
<hr> 
<!-- Exakte Textgröße für spätere Verarbeitung  -->
<!-- Werte werden erst nach "refresh" aktuell -->
Exakte Textgröße:
<br>
      <?php echo $_SESSION['wertwidth']; ?> lang
<br>
     <?php echo $_SESSION['wertheight']; ?> hoch
<br>
<hr>
<!-- Hintergrundfarbe auswählen -->
<!-- funktioniert nicht, liegt wohl an "#" -->
Farbcode für Hintergrund (z.B. #00FFAA)<br>
    <input type="text" name="color"id="color" value="<?php echo $hintergrund; ?>">
<hr>
<br>
    <input type="submit" name="save_form" value="Submit"> <input type="reset" name="save_form" value="Reset">

</form>

</body>
</html>

verarbeitung.php
PHP:
<?php
session_start();
header("Content-type: image/gif");
$mytext = $_GET['meintextform'];
$schriftfarbe = $_GET['colorfont'];
$schriftart = $_GET['font'];
$hintergrund = urldecode($_GET['color']);

$_SESSION['meintextform'] = $_GET['meintextform'];    //SESSIONS bekommen erst richtigen value nach refresh, nicht nach submit.
$_SESSION['colorfont'] = $_GET['colorfont'];   
$_SESSION['font'] = $_GET['font'];   
$_SESSION['color'] = $_GET['color'];

// Hintergrundfarbe von HEX in RGB umwandeln
$hintergrundhex = urldecode($hintergrund);

function hex2rgb($hexrgb){
   
  if (substr($hexrgb,0,1) == "#")
        $hexrgb = substr($hexrgb,1);

$R = substr($hexrgb,0,2);
$G = substr($hexrgb,2,2);
$B = substr($hexrgb,4,2);

$R = hexdec($R);
$G = hexdec($G);
$B = hexdec($B);

$RGB["red"] = $R;
$RGB["green"] = $G;
$RGB["blue"] = $B;

return $RGB;
}

$hexa = hex2rgb($hintergrundhex);

// Hier kommen die Schriftarten hin: 
  $font = '';
  switch ($schriftart) {
    case "Agate Bold":
    $font = './Agate Bold.ttf';
    break;
    case "AirstreamNF":
    $font = './AirstreamNF.ttf';
    break;
    case "Allegro_BT":
    $font = './Allegro_BT.ttf';
    break;
}; 
  $fontsize = 50;
  $angle = 0;
  $bg_size = imagettfbbox($fontsize, $angle, $font, $mytext);
  $width = (abs($bg_size[0] - $bg_size[2]) + 10);
  $height = (abs($bg_size[5] - $bg_size[1]) + 10);
// Exakte Textgröße berechnen:
  $wertwidth = $width - 10;
  $_SESSION['wertwidth'] = $wertwidth;
  $wertheight = $height - 10;
  $_SESSION['wertheight'] = $wertheight;
 
  $picture = imagecreate($width, $height);
  $bg_color = imagecolorallocate($picture, $hexa["red"], $hexa["green"], $hexa["blue"]);
// Hier wird die Textfarbe ausgewaehlt:
  $textcolor = '';
    switch ($schriftfarbe) {
    case "color1":
    $textcolor = imagecolorallocate($picture,255,255,255);
    break;
    case "color2":
    $textcolor = imagecolorallocate($picture,255,0,2);
    break;
    case "color3":
    $textcolor = imagecolorallocate($picture,2,0,255);
    break;
};
  imagefill($picture, 0, 0, $bg_color);
  imagettftext($picture, $fontsize, $angle, abs($bg_size[0] - 5), abs($bg_size[5] - 5), $textcolor, $font, $mytext);
 

imagegif($picture);
imagegif($picture,"1bildausgabe.gif");
imagedestroy($picture);
 

?>

Lieben Gruß,
Laura
 

Neue Beiträge

Zurück