Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn PHP-Imagestring chinesische Zeichen verstümmelt?

Was tun, wenn PHP-Imagestring chinesische Zeichen verstümmelt?

藏色散人
藏色散人Original
2020-08-19 09:32:483049Durchsuche

php imagestring Chinesische verstümmelte Zeichen werden dadurch verursacht, dass die GD2-Bibliothek selbst keine chinesischen Schriftarten hat. Die Lösung besteht darin, eine Schriftart zur Anzeige der Ausgabezeichenfolge anzugeben.

Was tun, wenn PHP-Imagestring chinesische Zeichen verstümmelt?

Empfohlen: „PHP-Video-Tutorial

Bildzeichenfolgenfunktion zeigt verstümmelte chinesische Zeichen an

1. Problembeschreibung

Als ich lernte, Bilder mit Wasserzeichen zu versehen, habe ich die integrierte GD-Bibliothek mit erweiterten Funktionen verwendet . Die im Video-Tutorial verwendete Funktion imagestring ( resources $image , int $font , int $x , int $y , string $s , int $col ) zeigt in tatsächlichen Anwendungen chinesische Wasserzeichen nicht richtig an und zeigt Chinesisch an verstümmelte Zeichen.

2. Lösungsprozess das Zeichen Die Koordinaten der oberen linken Ecke der Zeichenfolge, die obere linke Ecke des gesamten Bildes ist 0, 0). Wenn die Schriftart 1, 2, 3, 4 oder 5 ist, wird die integrierte Schriftart verwendet.

Der zweite Parameter $font dieser Funktion ist der Schriftartparameter, aber der Beamte gibt nur an, dass die integrierte Schriftart verwendet wird, wenn der Wert auf 1-5 eingestellt ist Die sogenannten integrierten Schriftarten 1-5 können Chinesisch nicht normal darstellen. Darüber hinaus wird im offiziellen Dokument nicht erläutert, ob andere Werte und andere Schriftartdateien als 1-5 verwendet werden können. Der Test ergab, dass dieser Parameter nicht normal verwendet werden kann, wenn er auf andere Schriftartdateien festgelegt ist.

Nachdem ich online nach relevanten Inhalten gesucht hatte, stellte ich fest, dass in den meisten Fällen die fehlerhafte Anzeige von Chinesisch darauf zurückzuführen ist, dass die GD2-Bibliothek selbst keine chinesischen Schriftarten enthält. Daher muss eine Schriftart angegeben werden, um die Ausgabezeichenfolge anzuzeigen . Wenn Sie Chinesisch auf dem Bild ausgeben möchten, sollten Sie die Funktion imagettftext (Ressource $image, float $size, float $angle, int $x, int $y, int $color, string $fontfile, string $text) verwenden. Die offizielle Beschreibung dieser Funktion lautet: TrueType-Schriftart verwenden, um Text in das Bild zu schreiben

Der zweite Parameter dieser Funktion ist ebenfalls eine Schriftartdatei, die auf eine Schriftartdatei im TTF-Format verweisen sollte. Durch Tests wurde festgestellt, dass Chinesisch kann normal angezeigt werden. $font ist der Pfad der Schriftartdatei. Wenn die Schriftartdatei im selben Verzeichnis wie die PHP-Datei abgelegt wird, ist dies der Name der Schriftartdatei.

Außerdem habe ich im PHP-Handbuch gefunden, dass es ein weiteres Bild gibtfttext (resource$image, float$size, float$angle, int$x, int$y, int$color, string$fontfile, string$text [, array$extrainfo] )t-Funktion,

Die offizielle Beschreibung dieser Funktion lautet: Verwenden Sie die Schriftart FreeType 2, um Text in ein Bild zu schreiben, sehr ähnlich der obigen Funktion imagettftext. Lediglich die referenzierten Schriftartdateitypen sind unterschiedlich, daher können Sie mit dieser Funktion möglicherweise auch Chinesisch anzeigen. Aber ich bin zu faul, es auszuprobieren. . . Wenn Sie interessiert sind, können Sie es versuchen.

Ich habe versehentlich festgestellt, dass die verwendete Schriftartdatei im Verzeichnis auf derselben Ebene wie die PHP-Datei abgelegt wurde. Als $font der Name der Datei war, stellte ich fest, dass die Funktion nicht normal ausgeführt werden konnte Beim Abfragen des Fehlerprotokolls habe ich festgestellt, dass imagettftext(): Schriftart /open nicht gefunden werden konnte. Durch die Baidu-Abfrage habe ich erfahren, dass es in Linux-Systemen nicht ausreicht, nur $font als Dateinamen festzulegen. Sie müssen auch den Pfad angeben. wie „./xxx.ttf“ (relativer Pfad) oder „/usr/share /fonts/xxx.ttf“ (absoluter Pfad). Der Test ergab, dass es normal angezeigt werden kann.

3. Zusammenfassung:

imagestring kann Chinesisch kaum normal anzeigen, vielleicht gibt es andere Methoden. Es wird jedoch empfohlen, imagettftext zu verwenden, da dies einfach und praktisch ist. Sie müssen lediglich eine Schriftartdatei importieren.

Der $font-Parameter der imagettftext-Funktion muss nur auf den Dateinamen im Windows-System gesetzt werden und die Schriftartdatei befindet sich im aktuellen Verzeichnis. Im Linux-System muss jedoch der Pfad angegeben werden ./.

Das obige ist der detaillierte Inhalt vonWas tun, wenn PHP-Imagestring chinesische Zeichen verstümmelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn