昨天接到一个新需求,给图片加文字。用于感恩节还是圣诞节之类的哦。也就是图片加文字水印。网上查了下,很多相关的内容。英文是很好解决滴,不过中文可搞死我了。
大致就是:
$name='郁闷aaaaaa';//要加的水印文字 |
然后就会发现乱码。
网上再查,类似$text = iconv(“GB2312”, “UTF-8”, $name);GBK啊等等,我都试过,结果一样,还是乱码。再有的说因为php文件本身的编码不是UTF8啊等等。我特意记事本,另存为UTF-8,再try,仍然乱码。还有的说加什么header( “Content-Type:text/html; charset=UTF-8 “);仍然乱码。
还有的说用mb_convert_encoding($content, “html-entities”,“utf-8” );最后终于OK了,不过这个函数还得对应的字体库才行。不然仍然会乱码的。
还得注意有可能会报这个错误imagettftext() [function.imagettftext]: any2eucjp(): something happen in XXX.php on line XX。这个就是可能字库里面木有,换个字库。
下面给出我测试的几个典型。
function test1() |
效果如图:
Test1
Test2 Test3
把每一次试的结果都保存了。
- $name = iconv(‘UTF-8’, ‘GB18030//IGNORE’, $name);
$name = iconv(‘UTF-8’, ‘GB2312’, $name);
$font=“./simhei.ttf”;
- $name=‘唐磊leitang’;
$name = mb_convert_encoding($name, “html-entities”,“utf-8” );
$font = ‘./arial.ttf’;//水印字体
- $name=‘唐磊leitang’;
$name = mb_convert_encoding($name, “html-entities”,“utf-8” );
$font = ‘./simhei.ttf’;//水印字体
- $name=‘唐磊leitang’;
$name = mb_convert_encoding($name, “UTF-8”, “GBK”);
$font = ‘./simhei.ttf’;//水印字体
附上详细方法(参考网上滴):
/** |
顺便把图片水印的也贴出来:
/** |
btw,codecolorer这个插件的那个bug还没解决啊。后台写blog时,只要切换一下html到可视化,代码缩进就木有了……