Jump to content
Sign in to follow this  
jakobg

Zeilenumbruch in php generierten Bildern

Recommended Posts

Hallo!

Ich habe eine Frage:

Wie bekomme ich einen Zeilenumbruch in php-generierten Bildern in?

Ich habe mit php ein png Bild generiert, indem ein Text aus einer Datenbank angezeigt wird. Da das Bild 256x192 groß ist und der Text etwas klein ist, sind nur die ersten Wörter zu sehen und der Rest geht aus dem Bild raus. Wenn ich oder \n in den Text einfüge macht der da nur komische Schriftzeichen raus.

  //^^weiter oben eine MYSQL anforderung für den Text, der in der Variable $text gespeichert wird
 $text = "hier ein Text, der nicht ganz ins Bild passt und über den Rand hinaus geht";
 if (function_exists('imagecreate')) {
  header("Content-type: image/png"); 
  $im = @imagecreate (256, 192) 
  or die ("Cannot initialize new GD image stream"); 
  $background_color = imagecolorallocate ($im, 31,79,55); 
  $text_color = imagecolorallocate ($im, 255,255,255); 
  Header("Content-type: image/gif"); 
  imagestring($im, 12, 12, 12,$text, $text_color); 
  imagepng($im); 
  imagedestroy($im); 
 }

Ich hoffe ihr könnt mir da weiterhelfen.

Share this post


Link to post
Share on other sites

nunja, man kann anhand von dem verwendeten font in dem img erechnen, wieviel zeichen

auf eine zeile passen könnten.


daraus kannst du dir dann ja nen schleifchen basteln, was dir mehrmals imagestring();

aufruft und nur die y-pos verändert

diese funktionen sollten dabei helfen

imagefontwidth()

substr()

strpos()


gruß raiserle

Share this post


Link to post
Share on other sites
Original von JakobG

aber das Scrip klappt bei mir nicht.


Na das ist ja eine ausführliche Problembeschreibung. :R:


In den "User Contributed Notes" gibt es mehrere Funktionen, die hast du alle schon ausprobiert?


Gruß

Jogi

Share this post


Link to post
Share on other sites

Dieses Script von der Seite, die du mir gegeben hast, klappt nicht. Es wird einfach kein Bild angezeigt, sondern nur eine leere Seite.


Wie schreibe ich so ein Script?

Also. Ich habe einen Text. Der soll mit Zeilenumbrüchen in ein 256x128 großes Bild gebracht werden, wo am Rand jeweils oben, unten, rechts und links 12 pixel platz (Rand) ist. Es sollten auch keine Wörter aus einander gerissen werden. Da ich noch nicht sehr viel Erfahrung in php habe, frage ich euch, wie ich das am Besten mache. Wie teile ich einen String so, dass kein Wort auseinander gezogen wird, das mit den mehreren Positonen des Texts klappt schon. Also dass erste Zeile $text1 ist und die zweite $text2.


Danke für eure Hilfe!

Share this post


Link to post
Share on other sites

substr("dein string",0,strpos(" ",20));


strpos(" ",20); --> sucht in einem string, das letze vorkommen eines, in diesem

fall, leerzeichen bis zur 20. stelle


substr("dein string",0, wert_von_strpos); --> liefet einen string von "dein string zurück", von position 0

bis eben wert_von_strpos


zu beachten sei, dass man vielleciht vorher noch bissel was mit strlen abfängt, sonst kanns zu unerwartete sachen kommen


gruß raiser

Share this post


Link to post
Share on other sites

Falsch!


a) strpos($string, $search, $offset)

Gibt die Position des ersten gefunden Zeichens retour.

Bei $offset begint die Suche.

www.php.net/strpos


b) strrpos($string, $search, $offset)

sucht von hinten nach vorne, vor PHP5 gab es $offset nicht und $search durfte kein String sein.

www.php.net/strrpos


Ich würde folgendes vorschlagen:

www.php.net/wordwrap

www.php.net/explode


Damit hast du dann eigentlich richtig angewendet die Zeilen in einem Array.

Share this post


Link to post
Share on other sites
Original von mahe

Ich würde folgendes vorschlagen:

www.php.net/wordwrap

www.php.net/explode


Damit hast du dann eigentlich richtig angewendet die Zeilen in einem Array.

Danke mahe!

Hab´s hinbekommen!

Share this post


Link to post
Share on other sites

So jetzt habe ich das mit den Zeilenumbrüchen hinbekommen, aber wie mache ich in das Selbe Bild, wo der Text drin ist ein Hintergrundbild rein? Ich habe es mit imagecreatefrompng versucht, hat aber nicht wirklich geklappt, da ich auch noch das Script, das den Text ausgibt am Laufen hatte.

Wie kann ich beides zusammen anwenden?

Share this post


Link to post
Share on other sites
wie mache ich in das Selbe Bild, wo der Text drin ist ein Hintergrundbild hat?

Jaja, und nachts ist kälter als draußen.

hat aber nicht wirklich geklappt

Eine sehr schöne Problembeschreibung.


Erst den Hintergrund einfügen und dann den Text schreiben. Oder direkt den Hintergrund nehmen, Text drauf und unter anderem Namen abespeichern.


Gruß

Jogi

Share this post


Link to post
Share on other sites
Original von jogibär

Erst den Hintergrund einfügen und dann den Text schreiben. Oder direkt den Hintergrund nehmen, Text drauf und unter anderem Namen abespeichern.

Tolle Beschreibung.wie soll ich den Hintergrund direkt nehmen? Wie soll ich den Text drauf machen? und wie soll ich das unter einen anderen Namen abspeichern? Ich will das beides in einem Bild haben.

Share this post


Link to post
Share on other sites

Mal dumm gefragt, hast du dir mal die Mühe gemacht, die Doku in Sachen image-Funktionen zu lesen, oder wartest du nur darauf, alles vorgekaut bzw. ein fertiges Script zu bekommen? In der Doku gibt es zu fast jeder Funktion Beispiele, die man sich in Ruhe ansehen sollte.


Du hast eine png-Datei als Hintergrund. Ist diese Grafik genauso groß wie das endgültige Bild sein soll? Wenn ja, die Datei mit imagecreatefrompng einlesen. Dann mit imagettftext den Text schreiben und mit imagepng abspeichern, falls erwünscht, sonst einfach nur ausgeben.


Gruß

Jogi

Share this post


Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...