| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

25-11-2007, 01:37
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Bild + unbekannte Breite?
Hallo,
ich habe atm ein denke mal kleines Problem beim Erzeugen eines Bildes.
Ich habe einen Text und möchte ein Bild erzeugen mit einem speziellen .ttf-font, jedoch weiß ich nicht genau, wie ich die Weite des Textes mit dem Font bestimmen soll.
Auf php.net bin ich auf die Funktionen imagefontwidth/height und imageloadfont gestoßen, jedoch funktioniert das ganze nich so wirklich:
PHP-Code:
$fsize = imageloadfont("fonty.ttf");
$fwidth = imagefontwidth($fsize);
$fheight = imagefontheight($fsize);
$bildtext = "lalilu";
$bildwidth = $fwidth*strlen($bildtext);
$im = imagecreatetruecolor($bildwidth,$fheight)
or die("Cannot Initialize new GD image stream");
$font_color = imagecolorallocate($im, 255, 255, 255);
imagettftext($im,$fsize, 0, 0,$fsize, $font_color,"./Paco.ttf", $bildtext)
or die("imagettffehler");
header ("Content-type: image/png");
imagepng($im);
imagedestroy($im);
Liegts evtl daran, dass .ttf nicht als bitmap-font "zugelassen" wird?
Andersrum gefragt: Hat jmd eine Lösung für das Problem, wie ich die Weite eines Bildes bestimmen kann mit einem .ttf-Font + unbekannte Textlänge?
mfg
|

25-11-2007, 01:41
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
|

25-11-2007, 01:51
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Ah kay,
selten dämlich übersehen.
..aber irgendwas mach ich dann auch bei der Funktion falsch:
PHP-Code:
$fsize = 20;
$bidltext = "schalallalalaaalals";
$bildwerte = imagettfbbox($fsize,0, "fonty.ttf", $bildtext);
print_r($bildwerte);
Ausgabe:
Code:
Array ( [0] => -1 [1] => -1 [2] => -1 [3] => -1 [4] => -1 [5] => -1 [6] => -1 [7] => -1 )
Der font liegt natürlich im gleichen Verzeichnis .... (falls jmd auf die Idee kommt zu fragen)..
Noch nen Tipp pls?
|

25-11-2007, 02:07
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
$bidltext !== $bildtext
Noch nie von error_reporting() gehört?
|

25-11-2007, 02:59
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Doch ... sollte normal auch auf E_All sein ... muss ich wohl nochmal config überprüfen
mfg
|

29-11-2007, 16:11
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Hallo,
ich muss mich doch nochmal dazu melden.
Ich habe nun ein paar Tage mit der Funktion rumprobiert, hab aber für alle ttf's nie eine optimale Lösung gefunden.
Ich denke einfach, dass es daran liegt, dass ich die ausgegebenen Werte der Funktion
http://php.net/imagettfbox
nicht komplett verstehe bzw. mir das nicht anschaulich machen kann.
Somit wollte ich mal fragen, ob mir es evtl jmd an einer grafik veranschaulichen könnte, welcher wert wo genau nun auf der grafik ist.
Ist zwar eine etwas spezielle Frage, aber ich möchte keinen Code verwenden, den ich nicht komplett verstehe..
Hab mir die Comments der Funktion angeschaut, aber hab am ende die Funktion immer noch nicht 100% verstanden ...
-> z.b. http://php.net/imagettfbox#75491
Hoffe mal, dass sich jmd dazu "herablässt" :-)
mfg
|

29-11-2007, 18:50
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
PHP-Code:
$x = 20;
$y = 30;
$box = imagettfbbox( 12, 0, 'C:/WINDOWS/Fonts/ARIAL.TTF', 'Der Text' );
imagettftext( $img, 12, 0, $x, $y,
imagecolorallocatealpha( $img, 255, 0, 0, 0 ), 'C:/WINDOWS/Fonts/ARIAL.TTF', 'Der Text' );
$col = imagecolorallocate( $img, 0, 255, 0 );
imageline( $img, $x+$box[0], $y+$box[1], $x+$box[2], $y+$box[3], $col );
imageline( $img, $x+$box[2], $y+$box[3], $x+$box[4], $y+$box[5], $col );
imageline( $img, $x+$box[4], $y+$box[5], $x+$box[6], $y+$box[7], $col );
imageline( $img, $x+$box[6], $y+$box[7], $x+$box[0], $y+$box[1], $col );
|

29-11-2007, 23:34
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Hallo,
das script von dir hat zwar so nicht funktioniert .... aber okay 
Hab es nun hinbekommen und glaube auch verstanden
danke!
mfg
ps: wie kann es sein, dass eine bestimmte ttf nicht korrekt angezeigt wird sondern solche kästchen .... aber im windows-ttf anzeiger sehe ich sie...
|

29-11-2007, 23:40
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Zitat:
das script von dir hat zwar so nicht funktioniert .... aber okay 
Hab es nun hinbekommen und glaube auch verstanden
|
Ist ja auch kein komplettes Skript, sondern nur ein Minibeispiel, beschränkt auf das nötigste ^^
|

30-11-2007, 00:37
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Zitat:
Original geschrieben von PHP-Desaster
beschränkt auf das nötigste ^^
|
Dann hättest wenigstens noch das imagecreatetruecolor hinschreiben können  ... dann hätte ich nicht erst raten müssen, wie groß ich das bild nun mache ..^^
aber danke
|

30-11-2007, 13:30
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
So hast du dir den Code wenigstens ansehen müssen
|

30-11-2007, 14:38
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
<spässchen>
Die Baseline mit einzuzeichen, das hättest du ja wenigstens tun können. Wegen der Unterlängen ...
</spässchen>
|

30-11-2007, 18:18
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Zitat:
Original geschrieben von PHP-Desaster
So hast du dir den Code wenigstens ansehen müssen
|
Da ich lernen wollte, hätte ich dies wohl so oder so getan ;-)
Damit konnte ich zumindest die Sache bei Seite legen bzw. beenden ...
Nun gehts an Thumbnails erstellen, aber werde mir wohl erstmal noch die meistens image-Funktionen anschauen, um einen Überlick zu erhalten.
@combie: Das war mein Hauptproblem  Bis ich das verstanden hatte, war es schon spät xD
|

29-09-2009, 21:08
|
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
So altes Thema, sorry.
Mittlerweile hab ich das Problem wieder mit der baseline. Ich weiß nicht, wie ich damals darauf gekommen bin, aber nun komme ich nicht mehr darauf. Meine alten Codes hab ich leider auch nicht mehr zur Verfügung, wie ich damit rumprobiert hatte..
Kann mir vlt nochmal jmd. nen Hint geben, sodass ich auch den unteren Teil des g,y etc. sehen kann? Also wie ich auf die Baseline komme...
Danke.
mfg
|

30-09-2009, 00:15
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
ich bin mir nicht sicher, ob ich dich richtig verstanden habe, aber die einzelnen Maße für Oberlänge, Grundline u. s. w. kann man mit imagettfbbox ermitteln. Dazu rufst du es mit verschiedenen Texten auf, z. B. "X" für die Versalhöhe, "dy" für die Gesamthöhe zwischen k- und p-Linie oder "x" für die Mittellänge. Die Höhe bekommst du jeweils aus $bbox[1] - $bbox[7], wobei $bbox das Ergebnis des imagettfbbox-Aufrufs ist.
Siehe auch die "Komplettlösung"
Gruß,
Amica
Geändert von AmicaNoctis (30-09-2009 um 05:10 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|