Impressum Disclaimer AGB
XENEVU
analoguhr
WWW CMS 800 Guide

deinMagazin
HPhilo's UpDate Target WiV TVglotzer Tagebuch Meinung Forensenf WebWatch KnowHow »» Artikel Archiv »» Artikel schreiben »» Artikel Leserbriefe Gästebuch
Westerwelle muß weg
www Links
TV-Programm Litfaßsäule lustige Bilder Wallpaper Webmaster Tutorials Treiber Suchen WieIstMeineIp? Browserspiel spielen
Foxkeh



Google

Wissen ist Macht

nix wissen macht auch nix

PHP schreibt in Blocksatz ins image

800XE 25.4.2008 13:08

Ich habe ein Problem! Ich möchte gerne ein Gif erstellen mit PHP, indem ein Textbereich ist, der möglichst schön ausgefüllt werden soll.

WebmasterPark

<?PHP


// parameter für TextBefehl
$size=23; // FontSize ... muß man spielen und rausfinden was richtig ist
$angle=0;
$fontfile='abc.ttf';
$text = 'Test Text fuer Ausgabe mit Formatirung wie in einem Buch ...... ';
$text.= 'Test Text fuer Ausgabe_mit_Formatirung_wie_in_einem_Buch ...... ';
$text.= 'ABC DEF GHI JKL MNO PQR STU VWX YZ ';
$text.= 'READY';



$xsize=420; // Breite des Bilder
$ysize=400; // höhe des Bildes
$linec=0;
$lines=8;
$img = imagecreatetruecolor ($xsize , $ysize);
$pen = ImageColorAllocate ($img, 0, 0,255);
$pap = ImageColorAllocate ($img,128,128,128);
imagefilledrectangle($img, 0, 0, $xsize, $ysize, $pap);


$border=23; // Abstand für links und rechts
$yoffset=8; // Abstand oben
$ysteps=30; // Pixeladdierer bei Linefeed(neueZeile)
$paperpixel = $xsize-($border*2); // Breite "Schreibfeld"
$spacepixel = 8; // Breite für Leerzeichen (minimum)


$tok= explode( ' ', $text );
$toks=count($tok);


function blockformat($blockformat)
{
global $spacepixel,$paperpixel,$pixel2out,$tok,$toki,$tok2out,$tokpixel,
$border,$y,$ysteps,$yoffset,$img,$size,$angle,$pen,$fontfile;
global $linec,$lines;

if ( $linec++<$lines )
{
$pixel2out-= $spacepixel; // letztes Leerzeichen beim Verbrauch wieder abziehen
$freepixel = ( $paperpixel-$pixel2out ); // wieviele Pixel unverbraucht?
if ( $toki==$tok2out ) $toki++;
$wordcount = $toki-$tok2out; // Wörter Zählen
$wordspaces= $wordcount-1; // Leerzeichen sind es eines weniger
if ( $wordspaces && $blockformat ) $freepixels=$freepixel/$wordspaces;
else $freepixels= 0; // Leerzeichenbreite
$i=$tok2out;
$word2out=0;
$x=$border; // xPosition offset laut Rand
$y+=$ysteps; // LineFeed addieren, auch bei erster Zeile, da xy Angabe für Bodenlinie
while( $i<$toki )
{
// Wort ausgeben
// inklusive addition freipixel*wievieltes Wort
// erstes Wort = Wort 0 ..... so ist das bei Arrays
$wordbox=imagettftext($img, $size, $angle,
$x+($freepixels*$word2out),
$y+$yoffset,
$pen, $fontfile, $tok[$i] );
$word2out++;
$x += $tokpixel[$i]; // Breite von ausgegebenen Wort addieren
//$x += $freepixels;
$x += $spacepixel; // Breite für Leerzeichen addieren
$i++;
}
/*
$wordbox=imagettftext($img, $size, $angle,
$x+($freepixels*$word2out),
$y+$yoffset,
$pen, $fontfile, " $wordbox[7] $wordbox[1]" );
*/
}
$tok2out=$toki;
$pixel2out=0;
}
$pixel2out=0;
$tok2out=0; // $i für aktuelles Zeilen Startwort
$toki=0; // $i für aktuelles Wort
while( $toki<$toks )
{
$wordbox=imagettfbbox( $size, $angle, $fontfile, $tok[$toki] );
//$ysteps =$wordbox[1];

if ( !$toki )
{
$ysteps=abs($wordbox[7]) * 1.5;
//imagettftext($img, $size, $angle,$xsize, 40, $pen, $fontfile, abs($wordbox[7]) );
}

$tokpixel[$toki]=$wordbox[2];
if ( $pixel2out + $wordbox[2] > $paperpixel )
{ // if mit aktuellem Wort zu viel
// = ausgabe ohne aktuelles Wort
blockformat(1);
}
else
{
// bisheriger verbrauch an Pixeln berechnen
// inklusive Platz für Leerzeichen
$toki++; // WörterCounter
$pixel2out += $wordbox[2];
$pixel2out += $spacepixel;
}
}
blockformat(0);
header("Content-type: image/gif");
imagegif ( $img );
?>






Textversion zum ausdrucken


Punkte für diesen Artikel :::: 3 Bewertungen

Beitrag kommentieren:


dein Name:


Gast ····
···· Bookmark @
15:07 Do 9.2. BrotscheibenHalbierer
14Uhr56 es können wieder Scheiben halbiert werden
15:49 Di 17.1. CSVAndy
Ich bin ein Schwein, und Du bist auch ein Schwein
2:13 Mo 16.1. CSVAndy
und täglisch nervt die Suchfunktion
17:01 Mo 9.1. 800XE
Google im FF wieder Deutsch
19:58 Mo 5.12. CSVAndy
Arbeitsergebniss
7:47 Di 29.11. BrotscheibenHalbierer
Lotto Sechser
0:57 Fr 25.11. AndyZmuda
vonAbisZ WEBSite mit Bindestrich
23:36 Do 20.10. BrotscheibenHalbierer
Ausgebrannt
19:35 Di 18.10. BrotscheibenHalbierer
Die deutsche Durchschnittsfamilie
6:15 Do 6.10. 800XE
Tablet-PC für 45€



little Big World crista Speyer Warum mit oder ohne WWW /Ally/All you need Cronjob.de best viewed with mozilla logo