php 图片水印中文乱码解决方法是要转入一款中文字体就以了,如果你在生成水印有中文时,又没载入相关的字体的话,那中文肯定会是乱码的,如果是英语字母那载不载入都没关系,代码如下:
- $name = iconv("gb2312","utf-8",www.phpfensi.com php粉丝网);
- $font = 'simhei.ttf';
- $im = imagecreatefromjpeg("test.jpg");
- $black = imagecolorallocate($im, 0, 0, 0);
- imagettftext($im, 12, 0, 320, 84, $black, $font, $name);
- imagepng($im);
- imagedestroy($im);
下面来看一款生成水印文字函数,代码如下:
- function str2pic ($string,$source,$destination="",$f,$fontsize=10,$shadowcolor="#ffffff",$f,$x=10,$y=10) {
-
- $pi=pathinfo($source);
- $pie=$pi[extension];#获取扩展名
- if(eregi("jpg|jpeg",$pie))$im=@imagecreatefromjpeg($source);
- if(eregi("gif",$pie))$im=@imagecreatefromgif($source);
- if(eregi("png",$pie))$im=@imagecreatefrompng($source);
- $col1=hex2dec($shadowcolor);#阴影颜色
- $col2=hex2dec($fontcolor);#字体颜色
- $col1=imagecolorallocate($im,$col1[0],$col1[1],$col1[2]);
- $col2=imagecolorallocate($im,$col2[0],$col2[1],$col2[2]);
- imagettftext($im,$fontsize,0,$y+1,$x+1,$col1,$fonturl,$string);
- imagettftext($im,$fontsize,0,$y,$x,$col2,$fonturl,$string);
- imagejpeg($im);
- if($destination)imagejpeg($im,$destination);
- imagedestroy($im);
- }
-
- function hex2dec($hexcolror) {#十六进制颜色转换成10进制颜色
- preg_match_all("/([0-f]){2,2}/i",$hexcolror,$matches);
- if(count($matches[0])==3){
- $rr=hexdec($matches[0][0]);
- $gg=hexdec($matches[0][1]);
- $bb=hexdec($matches[0][2]);
- }
- return array($rr,$gg,$bb);
- }
- ?>
- <?php
- str2pic("[url=http://www.phpfensi.com]www.phpfensi.com","winter.jpg","winter2.jpg","simhei.ttf",10,"ffffff","330099",10,10[/url]);
- ?>
|