Zeilenumbruch in php generierten Bildern

Begonnen von jakobg, 28. Januar 2007, 20:45:27

Vorheriges Thema - Nächstes Thema

jakobg

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.

http://jakobg.de.ms\" rel=\"external nofollow\">Jakob


http://cartoons.us.ms\" rel=\"external nofollow\">http://jakobg.ja.funpic.de/cartoonseite/banner/banner2.gif\" alt=\"banner2.gif\">


jogibär

Sieh\' mal in der Doku unter http://de2.php.net/manual/de/function.imagestring.php\" rel=\"external nofollow\">http://de2.php.net/manual/de/function.imagestring.php nach und beachte auch die \"User Contributed Notes\", da findet man immer sehr nützliche Hinweise und Funktionen.
Gruß
Jogi

jakobg

Danke für die Bemühung, aber das Scrip klappt bei mir nicht.

http://jakobg.de.ms\" rel=\"external nofollow\">Jakob


http://cartoons.us.ms\" rel=\"external nofollow\">http://jakobg.ja.funpic.de/cartoonseite/banner/banner2.gif\" alt=\"banner2.gif\">


raiser

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

Wissen ist das einzige Gut, dass sich vermehrt, wenn man es teilt! (Marie von Ebner-Eschenbach)




Irren ist menschlich!




Wer andern eine Grube gräbt,


sollte darüber nachdenken,


ob sie tief genug ist!!!!




Kameradschaft ist, wenn der


Kamerad schafft !!!!


jogibär


Original von JakobG aber das Scrip klappt bei mir nicht.
[/quote]
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

jakobg

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!

http://jakobg.de.ms\" rel=\"external nofollow\">Jakob


http://cartoons.us.ms\" rel=\"external nofollow\">http://jakobg.ja.funpic.de/cartoonseite/banner/banner2.gif\" alt=\"banner2.gif\">


raiser

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

Wissen ist das einzige Gut, dass sich vermehrt, wenn man es teilt! (Marie von Ebner-Eschenbach)




Irren ist menschlich!




Wer andern eine Grube gräbt,


sollte darüber nachdenken,


ob sie tief genug ist!!!!




Kameradschaft ist, wenn der


Kamerad schafft !!!!


mahe

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.

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


jakobg


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.
[/quote]Danke mahe!Hab´s hinbekommen!

http://jakobg.de.ms\" rel=\"external nofollow\">Jakob


http://cartoons.us.ms\" rel=\"external nofollow\">http://jakobg.ja.funpic.de/cartoonseite/banner/banner2.gif\" alt=\"banner2.gif\">


jakobg

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?

http://jakobg.de.ms\" rel=\"external nofollow\">Jakob


http://cartoons.us.ms\" rel=\"external nofollow\">http://jakobg.ja.funpic.de/cartoonseite/banner/banner2.gif\" alt=\"banner2.gif\">


jogibär

wie mache ich in das Selbe Bild, wo der Text drin ist ein Hintergrundbild hat?[/quote]
Jaja, und nachts ist kälter als draußen.
hat aber nicht wirklich geklappt[/quote]
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

jakobg


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.
[/quote]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.

http://jakobg.de.ms\" rel=\"external nofollow\">Jakob


http://cartoons.us.ms\" rel=\"external nofollow\">http://jakobg.ja.funpic.de/cartoonseite/banner/banner2.gif\" alt=\"banner2.gif\">


jogibär

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

all your base are belong to us / Discord