首頁 >後端開發 >php教程 >php中用GD函式庫的imagettftext()函數產生圖片失敗怎麼辦?

php中用GD函式庫的imagettftext()函數產生圖片失敗怎麼辦?

WBOY
WBOY原創
2016-12-01 01:27:311928瀏覽

我想根據輸入的文字,產生特定字體的圖片,根據php.net上的範例,並不能產生正確的圖片,請問該怎麼辦?

範例中的圖片:

php中用GD函式庫的imagettftext()函數產生圖片失敗怎麼辦?

我的圖片:

php中用GD函式庫的imagettftext()函數產生圖片失敗怎麼辦?

代碼:

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

我用的lnmp一鍵包搭的環境,編譯裡有--with-free-type-dir,

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

另外也支援free type:

php中用GD函式庫的imagettftext()函數產生圖片失敗怎麼辦?


更新:
在我改成用simhei.ttf(黑體 常規)字體後就可以正常顯示了,為什麼呢。 。 。

回覆內容:

我想根據輸入的文字,產生特定字體的圖片,根據php.net上的範例,並不能產生正確的圖片,請問該怎麼辦?

範例中的圖片:

php中用GD函式庫的imagettftext()函數產生圖片失敗怎麼辦?

我的圖片:

php中用GD函式庫的imagettftext()函數產生圖片失敗怎麼辦?

代碼:

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

我用的lnmp一鍵包搭的環境,編譯裡有--with-free-type-dir,

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

另外也支援free type:

php中用GD函式庫的imagettftext()函數產生圖片失敗怎麼辦?


更新:
在我改成用simhei.ttf(黑體 常規)字體後就可以正常顯示了,為什麼呢。 。 。

imagettftext支援TrueType類型的字體,imagepstext支援 PostScript Type1 字體。所以需要找到對應的字體,才會生效。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn