我已经安装了--enable-gd-jis-conv = shared和--enable-mbstring = shared,但我似乎仍然无法使用字体文件将日文文本保存到图像中。
如果我将“英雄时代”更改为某些英文文本,则会使用日文字体的英文字符正确创建图像,但是使用日文文本我会得到奇怪的正方形和其他内容。
public function makeJapaneseCharacter($font="static/JFONT.TTF", $W=200, $H=20, $X=0, $Y=0, $fsize=18, $color=array(0x0,0x0,0x0), $bgcolor=array(0xFF,0xFF,0xFF))
{
$this->im = @imagecreate($W, $H)
or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($this->im, $bgcolor[0], $bgcolor[1], $bgcolor[2]); //RGB color background.
$text_color = imagecolorallocate($this->im, $color[0], $color[1], $color[2]); //RGB color text.
imagettftext($this->im, $fsize, $X, $Y, $fsize, $text_color, $font, mb_convert_encoding('英雄時代', 'SJIS', 'UTF-8'));
$this->saveAsPng("jchar", "static/");
}
public function saveAsPng($fileName, $location= null)
{
$_fileName = $fileName.".png";
$_fileName = is_null($location)?$_fileName:$location.$_fileName;
return imagepng($this->im, $_fileName);
}
任何帮助都会非常感激, 尼古拉斯。
答案 0 :(得分:0)
尝试撰写L'英雄時代'
而不是'英雄時代'
。我不知道你使用的语言是什么,但这就是你在C中必须做的事情。
答案 1 :(得分:0)
imagettftext($this->im, 58, 0, 50, 100,
$text_color, $font,
mb_convert_encoding('佳人', 'UTF8', 'UTF-8'));
已找到密钥。