Hallo Freunde,
ich arbeite zur Zeit an einem kleine Script, welches über ein Formular ein dynamisches Bild mit Text, Linien und beliebiger Auflösung erzeugt.
(Für euch Profis sicherlich nichts großes, aber immerhin bin ich noch Anfänger und stolz auf meine Arbeit ! )
Unter folgender Adresse findet sich mein Script:
http://www.mhettig.de/US/Wallpaper-Gen/
Alles was ich eintrage wird auch ohne Beanstandung in das Bild übernommen. Mein Problem an der Sache: Das Bild läßt sich nicht mehr ordentlich speichern und mit keinem Bildprogramm öffnen (bzw. er speichert nur das Formular als .html ab...).
Das Problem tritt auch bei Firefox und bei anderem Webspace auf.
Ansatz zur Fehlerlösung:
Wenn ich alles lösche, was nicht unmittelbar mit der Erstellung des Bildes zu tun hat, sprich das Formular und die 1. if-Abfrage rausnehme, das _POST durch _GET ersetze und das dann mit einem (ziemlich) langen Link aufrufe, funktioniert das abspeichern wieder so, wie es sein sollte.
Ich bin jetzt schon eine ganze Zeit am Probieren und habe einiges versucht:
- das Formular includen
- alle nichtbenötigten HTML-Teile rauslöschen
- imagedestroy() weglassen
aber alles resultiert in dem gleichen Problem.
Außerdem habe ich im Vorfeld schon Kontakt mit einem Forum-Member aufgenommen, in der Hoffnung einen Beitrag hier im Board vermeiden zu können, doch leider ohne Ergebnis.
Ich hoffe, ihr könnt mir behilflich sein.
Gruß Army Man
ich arbeite zur Zeit an einem kleine Script, welches über ein Formular ein dynamisches Bild mit Text, Linien und beliebiger Auflösung erzeugt.
(Für euch Profis sicherlich nichts großes, aber immerhin bin ich noch Anfänger und stolz auf meine Arbeit ! )
Unter folgender Adresse findet sich mein Script:
http://www.mhettig.de/US/Wallpaper-Gen/
Alles was ich eintrage wird auch ohne Beanstandung in das Bild übernommen. Mein Problem an der Sache: Das Bild läßt sich nicht mehr ordentlich speichern und mit keinem Bildprogramm öffnen (bzw. er speichert nur das Formular als .html ab...).
Das Problem tritt auch bei Firefox und bei anderem Webspace auf.
PHP:
<?php
if (isset($_POST["Submit"])) {
header("Content-type: image/png");
// Erfassung der Variablen
$size1 = $_POST["size1"];
$size2 = $_POST["size2"];
$fontsizename = $_POST["fontsizename"];
$name1 = $_POST["name1"];
$name2 = $_POST["name2"];
$mitspr = $_POST["mitspr"];
$spr1 = $_POST["spr1"];
// Abfrage nach fehlenden Daten + Ausgabe einer Fehlermeldung
$error = '0';
if ($size1 == '') { $error++; }
if ($size2 == '') { $error++; }
if ($name1 == '') { $error++; }
if ($name2 == '') { $error++; }if ($error == '0') {} else {
include ("error.php");
die (" "); }
// Erstellung des Bildes
$im = imagecreate($size1, $size2);
// Festlegung der Farben
if ($bg=='black') {
imagecolorallocate($im, 0, 0, 0);
$orang = imagecolorallocate($im, 247, 94, 16);
$farbe1 = imagecolorallocate($im, 255, 255, 255); }if ($bg=='white') {
imagecolorallocate($im, 255, 255, 255);
$orang = imagecolorallocate($im, 247, 94, 16);
$farbe1 = imagecolorallocate($im, 0, 0, 1); }
// Schriftart und -größe
$font = 'POR2F';
$font2 = 'arialf';
$fontsize = $size1 / $fontsizename;
$fontsize2 = $size1 / (3 * $fontsizename);
// Erfassung der Schriftbreite/höhe + Ausgabe (Name)
$breite1 = imagettfbbox ($fontsize, 0, $font, $name1);
$breite2 = imagettfbbox ($fontsize, 0, $font, $name2);$breite3 = $breite1[0] + $breite1[2] + ( $size1 / 20 );
$breite4 = $breite2[0] + $breite2[2];$breite5 = $breite3 + $breite4;$breite6 = ($size1 - $breite5) / 2;
$breite7 = (($size1 - $breite5) / 2) + $breite3;$hohe1 = ($size2 + ( $fontsize / 2 ) ) / 2;$text1 = imagettftext($im, $fontsize, 0, $breite6, $hohe1, $farbe1, $font, $name1);
$text2 = imagettftext($im, $fontsize, 0, $breite7, $hohe1, $orang, $font, $name2);
//Erfassung der Linienpunkte + Ausgabe
$lineex1 = $breite6 - ( $size1 / 40 );
$liniex2 = $breite7 + $breite4 + ( $size1 / 40 );$liniey1 = ($size2 - $fontsize ) / 2;
$liniey11 =( ($size2 - $fontsize ) / 2 ) +1;
$liniey2 = ($size2 + $fontsize ) / 2;
$liniey22 = ( ($size2 + $fontsize ) / 2 ) +1;imageline ($im, $lineex1, $liniey1, $liniex2, $liniey1, $farbe1);
imageline ($im, $lineex1, $liniey11, $liniex2, $liniey11, $farbe1);imageline ($im, $lineex1, $liniey2, $liniex2, $liniey2, $farbe1);
imageline ($im, $lineex1, $liniey22, $liniex2, $liniey22, $farbe1);
// Erfassung der Schriftbreite/höhe + Ausgabe (Spruch)
if ($mitspr=='1') {
$breitespr1 = imagettfbbox ($fontsize2, 0, $font2, $spr1);
$breitespr2 = $liniex2 - $breitespr1[2];$hohespr1 = ($liniey2 + ( $size1 / $fontsizename ) - ($fontsize / 2));$textspr = imagettftext($im, $fontsize2, 0, $breitespr2, $hohespr1, $farbe1, $font2, $spr1); }
else {}
// Ausgabe des Bildes als png
imagepng($im);
imagedestroy($im);} else{
?>
<html>
<head>
<title>personal Wallpaper/Signatur-Generator by Army Man</title>
<style type="text/css">
<!--
.felder {
margin:2px; border:1px solid #000000; background-color:#D9E2EB; font-size:12px; color:#000000;
onFocus="this.style.backgroundColor='#00FFFF'";
}
.form {
margin:2px; border:2px solid #000000; background-color:#D9E2EB; font-size:14px; color:#000000;
}
-->
</style>
</head><body bgcolor="#FFFFFF" background="img/h.png">
<center><img src="img/banner.png" border="1" bordercolor="#000000"><br>
<b>Army Man's personal Wallpaper & Forum-Signatur Generator</b><br><br>
Ich hab hier mal zwei Beispiele, um zu zeigen, was unter anderem so möglich ist:<br>
<a href="img/bsp1.png" target="_blank">Wallpaper</a> - <a href="img/bsp2.png" target="_blank">Forum-Signatur</a>
<br><br><br><br><form action=<?php echo $PHP_SELF ?> method=POST>
<table border="1" bordercolor="#B3B3B3" width="500" height="400" cellspacing="0" cellpadding="5">
<tr>
<td width="175">
Farbprofil:
</td>
<td>
<INPUT TYPE="RADIO" NAME="bg" VALUE="black" checked>Version 1 (schwarz)<br>
<INPUT TYPE="RADIO" NAME="bg" VALUE="white">Version 2 (weiß)
</td>
</tr>
<tr>
<td width="175">
Auflösung:
</td>
<td>
<input name="size1" type="text" class="felder" size="10" maxlength="5"> x <input name="size2" type="text" class="felder" size="10" maxlength="5">
</td>
</tr>
<tr>
<td width="175">
Schriftgröße:
</td>
<td>
<INPUT TYPE="RADIO" NAME="fontsizename" VALUE="30">klein
<br>
<INPUT TYPE="RADIO" NAME="fontsizename" VALUE="20" checked>standard (empfohlen)
<br>
<INPUT TYPE="RADIO" NAME="fontsizename" VALUE="13">XL (geeignet für Forum Signaturen)
</td>
</tr>
<tr>
<td width="175">
Vorname / 1.Wort:
</td>
<td>
<input name="name1" type="text" class="felder" size="25" maxlength="15">
</td>
</tr>
<tr>
<td width="175">
Nachname / 2. Wort:
</td>
<td>
<input name="name2" type="text" class="felder" size="25" maxlength="15">
</td>
</tr>
<tr>
<td width="175">
Untertitel:
</td>
<td>
<INPUT TYPE="checkbox" NAME="mitspr" VALUE="1" checked>mit Untertitel ?<br>
<input name="spr1" type="text" class="felder" size="40">
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="Submit" class="form" value="mach's mir !">
</td>
</tr>
</table>
</form></center>
</body>
</html>
<?php } ?>
Ansatz zur Fehlerlösung:
Wenn ich alles lösche, was nicht unmittelbar mit der Erstellung des Bildes zu tun hat, sprich das Formular und die 1. if-Abfrage rausnehme, das _POST durch _GET ersetze und das dann mit einem (ziemlich) langen Link aufrufe, funktioniert das abspeichern wieder so, wie es sein sollte.
Ich bin jetzt schon eine ganze Zeit am Probieren und habe einiges versucht:
- das Formular includen
- alle nichtbenötigten HTML-Teile rauslöschen
- imagedestroy() weglassen
aber alles resultiert in dem gleichen Problem.
Außerdem habe ich im Vorfeld schon Kontakt mit einem Forum-Member aufgenommen, in der Hoffnung einen Beitrag hier im Board vermeiden zu können, doch leider ohne Ergebnis.
Ich hoffe, ihr könnt mir behilflich sein.
Gruß Army Man