jakobg 0 Posted January 28, 2007 Share Posted January 28, 2007 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. Quote Link to post Share on other sites
jogibär 0 Posted January 28, 2007 Share Posted January 28, 2007 Sieh' mal in der Doku unter 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 Quote Link to post Share on other sites
jakobg 0 Posted January 28, 2007 Author Share Posted January 28, 2007 Danke für die Bemühung, aber das Scrip klappt bei mir nicht. Quote Link to post Share on other sites
raiser 0 Posted January 29, 2007 Share Posted January 29, 2007 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 Quote Link to post Share on other sites
jogibär 0 Posted January 29, 2007 Share Posted January 29, 2007 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 Quote Link to post Share on other sites
jakobg 0 Posted January 29, 2007 Author Share Posted January 29, 2007 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! Quote Link to post Share on other sites
raiser 0 Posted January 30, 2007 Share Posted January 30, 2007 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 Quote Link to post Share on other sites
mahe 0 Posted January 30, 2007 Share Posted January 30, 2007 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. Quote Link to post Share on other sites
jakobg 0 Posted January 31, 2007 Author Share Posted January 31, 2007 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! Quote Link to post Share on other sites
jakobg 0 Posted January 31, 2007 Author Share Posted January 31, 2007 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? Quote Link to post Share on other sites
jogibär 0 Posted January 31, 2007 Share Posted January 31, 2007 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 Quote Link to post Share on other sites
jakobg 0 Posted January 31, 2007 Author Share Posted January 31, 2007 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. Quote Link to post Share on other sites
jogibär 0 Posted January 31, 2007 Share Posted January 31, 2007 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 Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.