Schreibe Text proportional zum Bild

8

Also habe ich das Bild:

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.

    
Arnas Pečelis 27.08.2015, 12:55
quelle

3 Antworten

2

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

  1. Erstellen von zwei Bildern für die erste Zeile und die zweite Zeile
  2. Prüfen, ob diese Bilder breiter sind als Ihr vorhandenes Bild und wenn ja
  3. Anpassung der Größe an die ursprüngliche Bildbreite
  4. Endlich alle drei Bilder zu einem zusammenfügen.

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

Beispielausgabe mit kurzem Text

Beispielausgabe mit langem Text

    
Kuya 01.09.2015, 10:47
quelle
0

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 , imagettfbbox     
aimme 01.09.2015 10:41
quelle
0

Ich 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:

    
bassxzero 01.09.2015 11:44
quelle

Tags und Links