und ich möchte Text unter dem Bild hinzufügen (demotivational Bild machen). Also verlängere ich die Höhe und füge dem Boden zusätzliche Höhe hinzu. Was ich brauche, ist den Text schreiben:
Oberster Text
unten längerer Text
Ich muss diese Wörter auch auf dem Bild zentrieren. Die Ausgabe sollte also lauten:
Alles ist in PHP GD-Bibliothek. Das Problem ist - ich weiß nicht, wie man den Anteil der Schriftgröße berechnet und zentriert. Meine Funktion, die nicht funktioniert, die Schriftgröße falsch berechnen und den Text falsch ausrichten.
%Vor%es sollte die Standardschriftgröße für Titel und Untertitel haben und es nur dann verringern, wenn der Text länger ist und nicht in den Wrapper passt.
Da es ziemlich schwierig zu bestimmen ist, ob Text breiter als seine Begrenzungsbox ist, ohne ihn tatsächlich "sehen" zu können, ist dies die Lösung, die ich gefunden habe.
Ich habe ein 1000px breites Bild verwendet und es auf 600 verkleinert. Natürlich hast du das offensichtlich schon ausgearbeitet.
Ich bin nicht besonders gut darin, Antworten zu schreiben (obwohl der Code getestet wurde und funktioniert), also hoffe ich, dass das hilft.
%Vor%Was Sie tun, ist
Ihre Standard-Textgrößen können hier geändert werden ... $font_size = 22
und $font_size = 16
für die erste bzw. die zweite Zeile.
Vergessen Sie nicht, Ihre ttf-Schriftartdatei hochzuladen und richtig darauf zu zeigen.
Und schließlich können Sie am Ende Code hinzufügen, um Ihre zwei temporären Dateien zu löschen, sobald Sie damit fertig sind.
Partial credit to jodebrabec für die Funktion calculateTextBox, die ich hier modifiziert und verwendet habe. Sie können es hier finden
Für eine einfache Textausrichtung müssen Sie den Befehl imagettfbbox()
verwenden. Wenn die richtigen Parameter angegeben werden, werden die Grenzen des zu erstellenden Textfelds in einem Array zurückgegeben, wodurch Sie die x- und y-Koordinate berechnen können, die Sie zum Zentrieren oder Ausrichten Ihres Texts verwenden müssen.
Ein horizontales Zentrierungsbeispiel:
%Vor%Für die horizontale Ausrichtung müssen wir die Breite des "Textfelds" subtrahieren {$ tb 2 oder $ tb [4]} aus der Bildbreite und subtrahiere dann um zwei.
Wenn Sie sagen, dass Sie ein Bild mit einer Breite von 200 Pixel haben, können Sie Folgendes tun:
%Vor%Dies gibt Ihnen perfekte horizontale Mittenausrichtung für Ihren Text, geben oder nehmen Sie 1 Pixel
Referenz: imagettftext , imagettfbboxIch bin mir nicht ganz sicher, ob Sie das suchen, aber writeCenteredText () schreibt zentrierten Text an eine gegebene Zeile $ y. Wenn der Text für die Linie zu lang ist, springt er zur nächsten Zeile und zentriert diesen Text ebenfalls. Lass es mich wissen, wenn ich das Problem nicht verstanden habe.
%Vor%Beispielausgabe: