[PHP] Zeilenumbruch im Bild

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Overkiller, 25. Dezember 2007 .

Schlagworte:
  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&ouml;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
     
  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?
     
  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.
     
  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
     
  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
     
  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.
     
  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
     
  8. 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.
     
  9. 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).
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.