GD库函数实现"中文水印"
$im = imagecreatetruecolor(100,100);//新建一个真彩色图像 $white = imagecolorallocate($im,255,235,255);//为一幅图像分配颜色,这一点和我的设计常识有区别..我从来没想过,在绘画时,要先给指定的图像标识分配颜色..这个函数经常和imagefill函数搞混. imagefill($im,0,0,$white); //区域填充 $black = imagecolorallocate($im,250,50,50);//为一幅图像分配颜色 imagerectangle($im,5,5,50,50,$black);//绘制一个矩形 header("Content-type: image/jpeg"); //发送标头,配合imagejpeg直接在浏览器中输出图像。 imagejpeg($im,''ImageName'',100);//输出一个像图,定名与质量 imagedestroy($im);//释放与 image 关联的内存。image 是由图像创建函数返回的图像标识符 ?> 利用 GD 库实现"中文水印" 发表时间: 2006-12-29 20:50 作者: hy0kl 来源: PHPChina 开源社区门户 此帖首先特别鸣谢 lmhllr 仁兄,没有他的指导偶此刻可能还在搜资料中 ing...... 首先申明本人是新手,对于 GD 库是一知半解,不到之处还请大家见谅吧.^_^ 自从在网上看到 php + GD 库能实现图片加"中文水印",开始了 GD 库的学习. 于是参照着下载的资料改了一个脚本,能实现 php绘图,当时很是窃喜了 N 久.(见笑!) 之后就用 imagestring() 函数在图像上实现了英文的"水印";但当偶尝试着用它加"中文水印"时发,打印出来的全是乱码. 于是又开始踏上解决乱码的路途. 许久没有得到满意的答案,就放弃了. 最近,发现 lmhllr 仁兄的个性签名十分特别,询问之后终于知道原因了: GD 库对中文支持的不是很好, imagettftext() 函数的字符集若是 UTF-8 ,则可以直接传递. 换言之,必需将 gb2312 的字符集转换成 UTF-8 的字符.可以使用 iconv() 函数来实现.偶的珍藏版 PHP 手册居然查不到本函数, ,不过可以到 php 官方网站查看 http://cn.php.net/manual/zh/ref.iconv.php ,只可惜并不是所有函数都有中文翻译,偶的 E 文不好,只能看着 lmhllr 仁兄的例子脚本猜了.此函数将 gb2312 的字符转换成 UTF-8 的字符.然后再调用函数,实现加"中文水印". 偶在偶的机子测试后得出:GD 支持的中文字体有 simhei.ttf(黑体) , SIMKAI.TTF(楷体) , SIMFANG.TTF(仿宋) ,SIMSUN.TTC(宋体&新宋体)等了.当然,脚本里面只能代入英文名称了,诶,谁叫操作系统不是咱写的呢. 希望本帖能给和偶一样遭遇的同志们一点启发.^_^ 下面是一个简单的测试脚本了. [php] Header("Content-type: image/png"); /*通知浏览器,要输出图像*/ $im = imagecreate(400 , 300); /*定义图像的大小*/ $gray = ImageColorAllocate($im , 235 , 235 , 235); $pink = ImageColorAllocate($im, 255 , 128 , 255); /* $fontfile = "C:\WINDOWS\Fonts\SIMHEI.TTF"; 不好意思,这句老是粘上后一提交就丢了,不知道是怎么回事,想测试的朋友们将注释去了现测试吧 */ /* $fontfile 字体的路径,视操作系统而定,可以是 simhei.ttf(黑体) , SIMKAI.TTF(楷体) , SIMFANG.TTF(仿宋) ,SIMSUN.TTC(宋体&新宋体) 等 GD 支持的中文字体*/ $str = iconv(''GB2312'',''UTF-8'',''中文水印!!!''); /*将 gb2312 的字符集转换成 UTF-8 的字符*/ ImageTTFText($im, 30, 0, 50, 140, $pink , $fontfile , $str); /* 加入中文水印 */ Imagepng($im); ImageDestroy($im); ?>[/php] OK ,收工,但愿这是本人的第一个有质量的水帖. 下面是本例子的效果了.再次对 lmhllr 表示由衷的感谢!!! |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |