Im PHP -Bildverarbeitungsfunktion ist ImageftText () ein sehr leistungsstarkes Werkzeug. Es ermöglicht Entwicklern, Text mit benutzerdefinierten Schriftarten auf Bilder zu rendern. Viele Entwickler stoßen jedoch bei der Verwendung von ImageFTText () auf die Kompatibilitätsprobleme im Zusammenhang mit der Kompatibilität:
Dieser Artikel enthält eine umfassende Erklärung dieser Themen und praktische Lösungen.
ImageftText () ist im Wesentlichen eine von PHP eingekapselte Schnittstelle zur Freetype -Bibliothek. FreeType ist eine weit verbreitete Schriftartmotor, daher hängt das von ImageftText () unterstützte Schriftformat hauptsächlich vom vom FreeType unterstützten Format ab.
Zu den gängigen und stabil unterstützten Schriftartformaten gehören:
.ttf (TrueType -Schrift)
.OTF (Openentyp -Schrift)
.ttc (TrueType Collection) (einige Systemunterstützung)
.pfa / .pfb (Typ 1 -Schriftart)
Unter ihnen sind .TTF und .OTF die häufigsten und empfohlenen Formate.
Frage Beschreibung:
$image = imagecreatetruecolor(400, 100);
$white = imagecolorallocate($image, 255, 255, 255);
$fontPath = '/path/to/fonts/myfont.ttf';
imagefttext($image, 20, 0, 10, 40, $white, $fontPath, 'Hello, world!');
Wenn die Schriftart korrupt, inkompatibel oder der Pfad falsch ist, wird PHP einen Fehler oder einen Ausfall des Renders melden.
Lösung:
Bestätigen Sie, dass die Schriftart Datei vorhanden ist und entsprechende Dateiberechtigungen hat.
Verwenden Sie eine verifizierte .ttf- oder .oTF -Schriftdatei.
Sie können Schriftkompatibilität bei z. B. https://gitbox.net/fonts/ hochladen und testen.
Problembeschreibung: Die Schrift ist normal, aber nicht englische Charaktere wie Chinesen, Koreanisch, Japanisch und andere Wörter können nicht korrekt angezeigt werden.
Lösung:
Verwenden Sie Schriftarten, die den Zielzeichenset unterstützen (z. B. Noto Sans CJK , Simhei.ttf , Microsoft Yahei.ttf usw.).
Stellen Sie sicher, dass die PHP-Datei selbst mit UTF-8 codiert wird.
Es kann durch:
$text = 'Hallo,Welt!';
$text = mb_convert_encoding($text, 'UTF-8', 'auto');
imagefttext($image, 20, 0, 10, 50, $white, $fontPath, $text);
Lösung:
Der Schriftart -Pfad muss ein absoluter Pfad sein, und es kann kein relativer Pfad oder keine URL -Adresse verwendet werden. Es wird empfohlen, Schriftdateien in einem festen Verzeichnis auf dem Server zu platzieren, z. B.:
$fontPath = __DIR__ . '/fonts/arial.ttf';
Wenn Sie Schriftarten von einer Remote -Adresse verwenden möchten, können Sie zuerst mit File_Get_Contents und File_put_Contents im lokalen Bereich herunterladen und speichern:
$remoteFont = 'https://gitbox.net/fonts/myfont.ttf';
$localFont = '/tmp/myfont.ttf';
file_put_contents($localFont, file_get_contents($remoteFont));
Lösung:
Verwenden Sie ImagecrreatetRueColor () anstelle von Imagecrate () .
Es wird empfohlen, dass die Schriftgröße nicht weniger als 12pt ist.
Wenn die Ausgabe PNG oder WebP ist, stellen Sie sicher, dass keine zusätzliche Komprimierung oder Skalierung durchgeführt wird.
Einige Schriftarten, obwohl .ttf oder .OTF , unterstützen nicht unbedingt alle Zeichen. Es wird empfohlen, den folgenden Test zu verwenden:
function testFontSupport($fontPath, $char = 'Du') {
$img = imagecreatetruecolor(100, 50);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
imagefill($img, 0, 0, $white);
imagefttext($img, 20, 0, 10, 30, $black, $fontPath, $char);
header('Content-Type: image/png');
imagepng($img);
imagedestroy($img);
}
Sie können das Ergebnisbild schnell mit dem Browser bestätigen.
Fragetyp | Empfohlene Lösungen |
---|---|
Schriftart nicht erkannt | Verwenden Sie .TTF / .OTF -Datei, um zu bestätigen, dass der Pfad korrekt ist |
Verstümmelt oder nicht angezeigt | Verwenden Sie mehrsprachige Schriftarten |
Netzwerkschrift Laden | Laden Sie die Schriftart so herunter, um lokal zu verwenden |
Schlechter Display -Effekt | Erstellen Sie Leinwand mit ImagecrreatetRueColor () |
Schließlich wird empfohlen, dass Entwickler bei der Verwendung von ImageftText () immer mit dem Fehlerbehandlungsmechanismus zusammenarbeiten und die Schriftartdateien im Voraus laden, um den stabilen Betrieb des Programms zu gewährleisten.
Wenn Sie einige gängige Schriftarten benötigen, können Sie https://gitbox.net/fonts/ besuchen, um häufig verwendete kostenlose Schriftressourcen anzuzeigen und herunterzuladen.