#1 25. Dezember 2007 Zeilenumbruch im Bild Hallo, ich habe folgendes Problem, ich generiere aus Daten aus eine SQL DB ein Bild. Nun möchte ich in diesem Bild aber einen Zeilenumbruch an einer bestimmten stelle haben. Habe schon \r \n <br> alles mögliche probiert ohne Erfolg. Vielleicht hat ja von euch einer ne Idee. Index.php Code: <?php include("inc/config.inc.php"); include("functions/functions.php"); $get_id = $_GET['id']; if(is_numeric($get_id) || $get_id == ""){ if($get_id != ""){ $sql = 'SELECT `points` as num,`name` as name FROM `welt_20_tribe` WHERE `id`='. $get_id; $temp = mysql_query($sql) or die (mysql_error()); mysql_close($link); $text = mysql_fetch_assoc($temp); if($text == "") die('Diesen Benutzer gibt es nicht !'); $result = $text['name'] ." ". $text['num'] ." Punkte"; imageCenterString(200, 60, $result, 5); }else{ echo '<form action="index.php?id" method="GET"> SpielerID: <input type="text" maxlength="7" name="id" /> <input type="submit" value="Generieren"> </form>'; } }else{ die ('Es ist nur die Eingabe von Zahlen möglich !'); } ?> functions.php Code: <?php function imageCenterString( $imgw, $imgh, $image_text = '', $text_size=5 ) { $im = imagecreate( $imgw, $imgh ); // white background and blue text $bg = imagecolorallocate($im, 255, 255, 255); $textcolor = imagecolorallocate($im, 0, 0, 255); $t_h = $t_w = $t_x = $t_y = 0; $base_w =9; $base_h = 16; $m = 0.88; switch ( $text_size ) { case 1: $t_w = $base_w*pow(($m*.98),4); $t_h = $base_h*pow(($m*.98),4); break; case 2: $t_w = $base_w*pow($m,3); $t_h = $base_h*pow($m,3); break; case 3: $t_w = $base_w*pow($m,2); $t_h = $base_h*pow($m,2); break; case 4: $t_w = $base_w*$m; $t_h = $base_h*$m; break; case 5: $t_w = $base_w; $t_h = $base_h; break; default: if ( $text_size >= 5 ) // set to 5 { $t_w = $base_w; $t_h = $base_h; } if ( $text_size < 5 ) // set to 1 { $t_w = $base_w*pow(($m*.98),4); $t_h = $base_h*pow(($m*.98),4); } break; } $text_array = array(); $max = floor($imgw/$t_w); for( $i=0; strlen($image_text) > 0; $i += $max) { array_push($text_array, substr($image_text,0,$max)); if ( strlen($image_text) >= $max ) { $image_text = substr($image_text,$max); } else { $image_text = ''; } } $t_y = ($imgh/2) - ($t_h*count($text_array)/2); foreach ( $text_array as $text ) { $t_x = ($imgw/2)-($t_w*strlen($text)/2); imagestring($im, $text_size, $t_x, $t_y, $text, $textcolor); $t_y += $t_h; } // output the image header("Content-type: image/png"); imagepng($im); } ?> Greetz Overkiller + Multi-Zitat Zitieren
#2 25. Dezember 2007 AW: Zeilenumbruch im Bild Mit imagestring zeichnest du einen String in ein Bild. Neue Zeile, neuer String! Schonmal daran gedacht einfach eine neue Zeile zu generieren? + Multi-Zitat Zitieren
#3 25. Dezember 2007 AW: Zeilenumbruch im Bild Sry bin noch relativ neu auf dem "PHP" Gebiet. Wie bekomm ich denn in die Funktion das so rein wie ich das möchte ? So weit sind meine Kentnisse noch nicht. Weil ich kann da ja jetzt nicht einfach nen 2ten Imagestring reinmachen, der weiß ja gar nicht wo er dann den Text teilen soll. + Multi-Zitat Zitieren
#4 25. Dezember 2007 AW: Zeilenumbruch im Bild Jo mach das mal, du könntest deine Strings natürlich "exploden" und dann für jedes Array - Element eine eigene Zeile zeichnen lassen, musst nur ein zuverläßiges Kriterium finde mit dem du den Zeilenumbruch feststellen kannst + Multi-Zitat Zitieren
#5 25. Dezember 2007 AW: Zeilenumbruch im Bild Ich merk schon das wird kompliziert Ich war schon stolz als ich die SQL Abfrage ordentlich ins Bild bekommen hab xD Aber danke schonmal für deine Hilfe + Multi-Zitat Zitieren
#6 25. Dezember 2007 AW: Zeilenumbruch im Bild Du musst aber auch nich immer "SELECT `Bla` as Doof" machen, du kannst auch einfach "SELECT Bla,Blu,Bli FROM `Table`" und dann per $arr['Bla']; drauf zugreife. + Multi-Zitat Zitieren
#7 25. Dezember 2007 AW: Zeilenumbruch im Bild Das hatte ich probiert aber dann immer nur "Resource id#4" zurück bekommen. EDIT: Komisch nu gehts..danke + Multi-Zitat Zitieren
#9 25. Dezember 2007 AW: Zeilenumbruch im Bild Uhm, sry Thema is nicht erledigt. Ich habs noch nich geschafft ne 2te Zeile ins Bild zu machen. Ich möchte ja nich schon wieder nen neuen Thread aufmachen um wenn ich nen stück weiter bin. + Multi-Zitat Zitieren
#10 25. Dezember 2007 AW: Zeilenumbruch im Bild aso, ja bei bildern gibts kein \n oder <br />. da musst du einfach die nächste zeile ein paar pixel drunter zeichnen lassen. wann ein zeilenumbruch notwendig is musst dir halt ausrechnen. javascript kann das (die breite eines textes ermitteln) bei php wird ein wenig schwerer aber machbar. probier ein wenig rum bis du ne ungefähre anzahl an zeichen hast die in eine zeile passen und dann splittest du mit wordwrap (wörter bleiben ganz). + Multi-Zitat Zitieren