Geschrieben von sparco am 13.03.2005, 15:34

Im ersten Teil (Bilder generieren:Vorbereitung) hab ich gezeigt, wie man sich zum erstellen von Bilder vorbereitet...
Ich hab mir gedacht, das man manchmal nüzlich ist, dynamisch Buttons zu erstellen(z.B wenn man eine Seite hat , wo man viele Buttons erstellen muss).
Also, mit diesem Tutorial zeige ich, wie man's macht.

Als erstes erstellen wir eine Form, wo man die Optionen waehlen kann:

'design_button.html' (Wenn sie hier die Daten ändern, wie die Namen der Form Elemente, müsst ihr es auch in 'make_button.php' aendern)


<form action="make_button.php" method="post" name="button_form" id="button_form">
<p>Schreiben sie hier das Text des Knopfes:</p>
<p>
<input name="button_text" type="text" id="button_text">
</p>
<p>Waehlen sie die Farbe</p>
<p>
<input type="radio" name="color" value="radiobutton">
Rot </p>
<p>
<input type="radio" name="color" value="radiobutton">
Gruen </p>
<p>
<input type="radio" name="color" value="radiobutton">
Blau</p>
<p>
<input type="submit" name="Submit" value="Knopf erstellen">
</p>
</form>

Natuerlich koennt ihr die Daten aendern, aber dann musst ihr make_button.php aendern
Jetzt sage ich ein paar Woerte, was an dieser Stelle schon erstellt werden soll.:
Als erstes, muesst ihr schon eine Bilddatei haben(Gruen-button.PNG,Blau-button.PNG,Rot-button.PNG Gif, JPEG,), auf der ihr das Text schreiben wird.
Als zweites, muesst ihr die Schriftart, die ihr benutzen wollt, vorhaben haben(als .ttf Datei).

Jetzt erstellen wir die 'make_button.php':


<?php

$button_text = $_POST['button_text'];
$color = $_POST['color'];

//Ueberpruefen, ob die Form mit Daten geffuelt ist
if(!isset($button_text) || !isset($color))
{
echo 'Die form ist nicht korrekt geffuelt. Erstellen eines Knopfes nicht moeglich';
exit;
}

//erstellen des Bildes mit der Farbe und ueberpruefen der Groesse
$im = imagecreatefrompng ($color.'-button.png');
$width_image = ImageSX($im);
$height_image = ImageSY($im);

//Wir brauchen 18 Pixel von den Kanten des Bildes
$width_image_to_margins = $width_image - (2*18);
$height_image_to_margins = $height_image - (2*18);

//Auszaehlen der Groesse des Textes
$font_size = 33;

//Path zur Bibliothek, wo die Scriftarten sind
putenv('GDFONTPATH=C:\WINNT\Fonts');
$fontname = 'arial';
do
{
$font_size--;
//Suchen der passender Groesse
$bbox=imagettfbbox ($font_size, 0, $fontname, $button_text);
$right_text = $bbox[2]; //rechte Koordinate
$left_text = $bbox[0]; //linke Koordinate
$width_text = $right_text - $left_text; //Breite des Textes
$height_text = abs($bbox[7] - $bbox[1]); //Hoehe des Textes
}
while ( $font_size>8 &&
( $height_text>$height_image_wo_margins ||
$width_text>%width_image_wo_margins )
);
if ( $height_text>$height_image_wo_margins ||
$width_text>$width_image_wo_margins )
{
echo 'Das Text passt nicht auf das Bild';
}
else
{
//Die passender Groesse des Textes ist gefunden

$text_x = $width_image/2.0 - $width_text/2.0;
$text_y = $height_image/2.0 - $height_text/2.0;
if ($left_text <0)
$text_x += abs($left_text); //mehr Platz von links
$above_line_text = abs($bbox[7]);
$text_y += $above_line_text;

$text_y -= 2;

$white = ImageCollorAllocate ($im, 255, 255, 255); //Weisse Farbe

ImageTTFText ($im, $font_size, 0, $text_x, $text_y, $white, $fontame, $button_text);

Header ('Content-type: image/png'); //image/jpg, image/gif...
ImagePng ($im)
// Gibt das Bild im Browser aus, wenn gleich in ein File, dann ImagePng($im, //$filename, wo $filename --> das gewuenschte file


So, das war's.
MFG, saprco.

Bewertung Anzahl
6
33,3 %
1 Bewertungen
4
33,3 %
1 Bewertungen
2
33,3 %
1 Bewertungen