> php教程 > php手册 > 본문

GD库函数实现中文水印

WBOY
풀어 주다: 2016-06-13 10:37:45
원래의
787명이 탐색했습니다.

  $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:WINDOWSFontsSIMHEI.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 表示由衷的感谢!!!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿