php 图片水印中文乱码解决方法

php 图片水印中文乱码解决方法是要转入一款中文字体就以了,如果你在生成水印有中文时,又没载入相关的字体的话,那中文肯定会是乱码的,如果是英语字母那载不载入都没关系,代码如下:

  1. $name = iconv("gb2312","utf-8",www.phpfensi.com php粉丝网);
  2. $font = 'simhei.ttf';//水印字体
  3. $im = imagecreatefromjpeg("test.jpg");//载入图片
  4. $black = imagecolorallocate($im, 0, 0, 0);//设置颜色
  5. imagettftext($im, 12, 0, 320, 84, $black, $font, $name);//打印水印
  6. imagepng($im);//输出图片,如果要保存加个保存路径和文件名,如imagepng($im,'test1.jpg'); //开源代码phpfensi.com
  7. imagedestroy($im);//清空缓存

下面来看一款生成水印文字函数,代码如下:

  1. function str2pic ($string,$source,$destination="",$f,$fontsize=10,$shadowcolor="#ffffff",$f,$x=10,$y=10) {
  2. //header('content-type:image/png');
  3. $pi=pathinfo($source);
  4. $pie=$pi[extension];#获取扩展名
  5. if(eregi("jpg|jpeg",$pie))$im=@imagecreatefromjpeg($source);
  6. if(eregi("gif",$pie))$im=@imagecreatefromgif($source);
  7. if(eregi("png",$pie))$im=@imagecreatefrompng($source);
  8. $col1=hex2dec($shadowcolor);#阴影颜色
  9. $col2=hex2dec($fontcolor);#字体颜色
  10. $col1=imagecolorallocate($im,$col1[0],$col1[1],$col1[2]);
  11. $col2=imagecolorallocate($im,$col2[0],$col2[1],$col2[2]);
  12. imagettftext($im,$fontsize,0,$y+1,$x+1,$col1,$fonturl,$string);
  13. imagettftext($im,$fontsize,0,$y,$x,$col2,$fonturl,$string);
  14. imagejpeg($im);
  15. if($destination)imagejpeg($im,$destination);
  16. imagedestroy($im);
  17. }
  18. function hex2dec($hexcolror) {#十六进制颜色转换成10进制颜色
  19. preg_match_all("/([0-f]){2,2}/i",$hexcolror,$matches);
  20. if(count($matches[0])==3){
  21. $rr=hexdec($matches[0][0]);
  22. $gg=hexdec($matches[0][1]);
  23. $bb=hexdec($matches[0][2]);
  24. }
  25. return array($rr,$gg,$bb);
  26. }
  27. ?>
  28. <?php
  29. str2pic("[url=http://www.phpfensi.com]www.phpfensi.com","winter.jpg","winter2.jpg","simhei.ttf",10,"ffffff","330099",10,10[/url]);
  30. ?>