php 输出汉字png GD显示中文
php输出图片可以适用GD组件来进行。
输出英文字母使用 imagestring — 水平地画一行字符串。
<?php
// 建立一幅 100X30 的图像
$im = imagecreate(100, 30);
// 白色背景和蓝色文本
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 255);
// 把字符串写在图像左上角
imagestring($im, 5, 0, 0, "Hello world! ", $textcolor);
// 输出图像
header("Content-type: image/png");
imagepng($im);
?>
输出中文的时候就不行了,下面的代码就只能输出英文。
<?php
// 建立一幅 100X30 的图像
$im = imagecreate(100, 30);
// 白色背景和蓝色文本
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 255);
// 把字符串写在图像左上角
imagestring($im, 5, 0, 0, "Hello world! 你好", $textcolor);
// 输出图像
header("Content-type: image/png");
imagepng($im);
?>
翻了下PHP手册,有时候手册是很强大的,就好比闲来无事翻字典,你会多认识好多字一样。
imagettftext — 用 TrueType 字体向图像写入文本,可以先导入中文字体在输出。
<?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 = 'yh.ttf';
// 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);
?>
效果
但要保证php文件是以utf8格式保存的,不然会输出如下乱码,
本函数同时需要 GD 库和 FreeType 库。
原因应该是内部进行了utf8和gbk转码工作,等有机会我再细分析下。