Heim >Backend-Entwicklung >PHP-Tutorial >Was soll ich tun, wenn die Funktion imagettftext() der GD-Bibliothek in PHP keine Bilder generieren kann?
Ich möchte basierend auf dem Eingabetext ein Bild in einer bestimmten Schriftart generieren. Das richtige Bild kann nicht generiert werden.
Bilder im Beispiel:
Mein Bild:
Code:
<code><?php // Set the content-type header('Content-Type: image/png'); // Create the image $im = imagecreatetruecolor(400, 30); // Create some colors $white = imagecolorallocate($im, 255, 255, 255); $grey = imagecolorallocate($im, 128, 128, 128); $black = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, 399, 29, $white); // The text to draw $text = 'Testing...'; // Replace path by your own font path //$font = 'arial.ttf'; // Set the enviroment variable for GD putenv('GDFONTPATH=' . realpath('.')); // Name the font to be used (note the lack of the .ttf extension) $font = 'aaa';//同目录下有个aaa.ttf字体文件,true type的。 // Add some shadow to the text imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); // Add the text imagettftext($im, 20, 0, 10, 20, $black, $font, $text); // Using imagepng() results in clearer text compared with imagejpeg() imagepng($im); imagedestroy($im); ?></code>
In der von mir verwendeten lnmp-Ein-Klick-Paketumgebung gibt es --with-free-type-dir in der Kompilierung,
<code>'./configure' '--prefix=/usr/local/php' '--with-config-file-path=/usr/local/php/etc' '--enable-fpm' '--with-fpm-user=www' '--with-fpm-group=www' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-iconv-dir' '--with-freetype-dir=/usr/local/freetype' '--with-jpeg-dir' '--with-png-dir' '--with-zlib' '--with-libxml-dir=/usr' '--enable-xml' '--disable-rpath' '--enable-bcmath' '--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--with-curl' '--enable-mbregex' '--enable-mbstring' '--with-mcrypt' '--enable-ftp' '--with-gd' '--enable-gd-native-ttf' '--with-openssl' '--with-mhash' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--with-gettext' '--disable-fileinfo' '--enable-intl' '--with-xsl'</code>
Darüber hinaus wird auch der freie Typ unterstützt:
Update:
Nachdem ich die Schriftart simhei.ttf (schwarzer Körper, normal) verwendet habe, kann sie normal angezeigt werden. . .
Ich möchte basierend auf dem Eingabetext ein Bild in einer bestimmten Schriftart generieren. Das richtige Bild kann nicht generiert werden.
Bilder im Beispiel:
Mein Bild:
Code:
<code><?php // Set the content-type header('Content-Type: image/png'); // Create the image $im = imagecreatetruecolor(400, 30); // Create some colors $white = imagecolorallocate($im, 255, 255, 255); $grey = imagecolorallocate($im, 128, 128, 128); $black = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, 399, 29, $white); // The text to draw $text = 'Testing...'; // Replace path by your own font path //$font = 'arial.ttf'; // Set the enviroment variable for GD putenv('GDFONTPATH=' . realpath('.')); // Name the font to be used (note the lack of the .ttf extension) $font = 'aaa';//同目录下有个aaa.ttf字体文件,true type的。 // Add some shadow to the text imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); // Add the text imagettftext($im, 20, 0, 10, 20, $black, $font, $text); // Using imagepng() results in clearer text compared with imagejpeg() imagepng($im); imagedestroy($im); ?></code>
In der von mir verwendeten lnmp-Ein-Klick-Paketumgebung gibt es --with-free-type-dir in der Kompilierung,
<code>'./configure' '--prefix=/usr/local/php' '--with-config-file-path=/usr/local/php/etc' '--enable-fpm' '--with-fpm-user=www' '--with-fpm-group=www' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-iconv-dir' '--with-freetype-dir=/usr/local/freetype' '--with-jpeg-dir' '--with-png-dir' '--with-zlib' '--with-libxml-dir=/usr' '--enable-xml' '--disable-rpath' '--enable-bcmath' '--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--with-curl' '--enable-mbregex' '--enable-mbstring' '--with-mcrypt' '--enable-ftp' '--with-gd' '--enable-gd-native-ttf' '--with-openssl' '--with-mhash' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--with-gettext' '--disable-fileinfo' '--enable-intl' '--with-xsl'</code>
Darüber hinaus wird auch der freie Typ unterstützt:
Update:
Nachdem ich die Schriftart simhei.ttf (schwarzer Körper, normal) verwendet habe, kann sie normal angezeigt werden. . .
imagettftext unterstützt TrueType-Schriftarten und imagepstext unterstützt PostScript Type1-Schriftarten. Sie müssen also die entsprechende Schriftart finden, damit sie wirksam wird.