php加汉字水印怎么变成一个个框了?

按照php中文网的教程写给图片加水印的代码,都是ok的,但发现汉字变成一个框了,怎么解决啊
image.png
代码如下

<?php
header("Content-type: text/html; charset=utf-8");
/*打开图片*/
//配置打开图片的路径
$src = "16pic_7145485_b.jpg";
//获取图片信息
$info = getimagesize($src);
//通过图片编号来获取图片的类型
$type = image_type_to_extension($info[2], false);
//在内存中创建一个和图像类型一样的图片
$fun = "imagecreatefrom{$type}";
//把图片复制到内存中
$image = $fun($src);
//操作图片
//设置字体的路径
$font =$font = dirname(__FILE__) ."/simsunb.ttf"; //字体文件
//添加内容
$content = "php中文网HHHHHHH";
//$content = iconv('gb2312','utf-8', "饿死");
//$content = iconv('gbk', 'utf-8', "饿死");
//$content = mb_convert_encoding($content, "html-entities", "utf-8");
//设置字体的颜色和透明度
$col = imagecolorallocatealpha($image, 255, 255, 255, 30);
//写入文字
imagettftext($image, 20, 0, 20, 30, $col, $font, $content);
//输出图片
//浏览器输出
header("Content-type:" . $info['mime']);
$fun = "image{$type}";

$fun($image);
//保存图片
$fun($image, 'FFFF.' . $type);
//销毁图片
imagedestroy($image);

我百度了,试了一下几种方法,好像不太管用

//添加内容
$content = "php中文网HHHHHHH";
$content = iconv('gb2312','utf-8', "php中文网");
$content = iconv('gbk', 'utf-8', "php中文网");
$content = mb_convert_encoding($content, "html-entities", "utf-8");

请大佬指教下还有哪里有问题!

阅读 1.9k
4 个回答

干,是字体的问题
image.png
我选的是上面这个简体,换成下面这个就OK了

这个 simsunb 字体有问题?换个常规点的微软雅黑试试。

因为这个编码不支持汉字就变成框了, php中文网应该分为段吧, 中文与其他, 中文部分的需要转码

$font =$font = dirname(__FILE__) ."/simsunb.ttf"; 什么意思
$font = dirname(__FILE__) ."/simsunb.ttf"

还有var_dump($font)一下,看看字体位置对不对

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题