ImageTTFText函数实现PHP图像加文字水印功能
http://hi.baidu.com/dmkj2008/blog/item/99e24e3deae9960ebaa1670d.html
ImageTTFText函数实现PHP图像加文字水印功能
一个ImageTTFText函数包含了如下的参数
imagettftext (image,size,angle, x, y,color,fontfile,text)
意思是 imagettftext() 将字符串 text 画到 image 所代表的图像上,从坐标 x,y(左上角为 0, 0)开始,角度为 angle,颜色为 color,使用 fontfile 所指定的 TrueType 字体文件。根据 PHP 所使用的 GD 库的不同,如果 fontfile 没有以 '/'开头,则 '.ttf' 将被加到文件名之后并且会搜索库定义字体路径。
由 x,y 所表示的坐标定义了第一个字符的基本点(大概是字符的左下角)。这和 imagestring() 不同,其 x,y 定义了第一个字符的右上角。
angle 以角度表示,0 度为从左向右阅读文本(3 点钟方向),更高的值表示逆时针方向(即如果值为 90 则表示从下向上阅读文本)。
fontfile 是想要使用的 TrueType 字体的文件名。
text 是文本字符串,可以包含 UTF-8 字符序列(形式为:{)来访问字体中超过前 255 个的字符。
color 是颜色的索引值。使用某颜色索引值的负值具有关闭防混色的效果
例如下面的 img.php 源码,应用则可使用为 <img src="img.php">
====================img.php
<?php
Header("Content-type: image/png");
/*通知浏览器,要输出图像*/
//$im = imagecreate(400 , 300);
/*如果没有指定图像,可以自定义图像的大小*/
$im = imagecreatefromjpeg("gd04.jpg");
$pink = ImageColorAllocate($im, 0 , 0 , 0);
$fontfile = "C:\WINDOWS\Fonts\方正静蕾简体.ttf";
/* $fontfile 字体的路径,视操作系统而定,可以是 simhei.ttf(黑体) , SIMKAI.TTF(楷体) , SIMFANG.TTF(仿宋) ,SIMSUN.TTC(宋体&新宋体) 等 GD 支持的中文字体*/
$str = iconv('GB2312','UTF-8','你想要的字符水印');
/*将 gb2312 的字符集转换成 UTF-8 的字符*/
ImageTTFText($im, 25,10,140,240,$pink,$fontfile,$str);
/* 加入中文水印 */
Imagepng($im);
ImageDestroy($im);
?>
如果需要做成动态URL的水印,则将
$str = iconv('GB2312','UTF-8','你想要的字符水印');
替换使用
$str = iconv('GB2312','UTF-8',$_REQUEST["id"]);
即可
imagettftext和imagestring区别
imagettftext -- 用 TrueType 字体向图像写入文本说明array imagettftext ( resource image, int size, int angle, int x, int y, int color, string fontfile, string text)
imagettftext() 将字符串 text 画到 image 所代表的图像上,从坐标 x,y(左上角为 0, 0)开始,角度为 angle,颜色为 color,使用 fontfile 所指定的 TrueType 字体文件。根据 PHP 所使用的 GD 库的不同,如果 fontfile 没有以 '/'开头,则 '.ttf' 将被加到文件名之后并且会搜索库定义字体路径。
由 x,y 所表示的坐标定义了第一个字符的基本点(大概是字符的左下角)。这和 imagestring() 不同,其 x,y 定义了第一个字符的右上角。
angle 以角度表示,0 度为从左向右阅读文本(3 点钟方向),更高的值表示逆时针方向(即如果值为 90 则表示从下向上阅读文本)。
fontfile 是想要使用的 TrueType 字体的文件名。
text 是文本字符串,可以包含 UTF-8 字符序列(形式为:{)来访问字体中超过前 255 个的字符。
color 是颜色的索引值。使用某颜色索引值的负值具有关闭防混色的效果。
imagettftext() 返回一个含有 8 个单元的数组表示了文本外框的四个角,顺序为坐下角,右下角,右上角,左上角。这些点是相对于文本的而和角度无关,因此“左上角”指的是以水平方向看文字时其左上角。
本例中的脚本将生成一个黑色的 400x30 的 JPEG 图像,其中有白色 Arial 字体写的 "Testing..."。
例子 1. imagettftext() 例子
<?php
header("Content-type: image/jpeg");
$im = imagecreate(400,30);
$white = imagecolorallocate($im, 255,255,255);
$black = imagecolorallocate($im, 0,0,0);
// Replace path by your own font path
imagettftext($im, 20, 0, 10, 20, $black, "/path/arial.ttf",
"Testing... Omega: Ω");
imagejpeg($im);
imagedestroy($im);
?>
本函数同时需要 GD 库和 FreeType 库。
今天仔细研究了下GD的一些相关技术,顺手也研究下GD中文乱码的问题。
使用GD库输出中文字符串,调用imagestring是没有用的。需要使用imagettftext()函数。imagettftext函数的具体使用就参考手册啦。
下面给个使用实例:
$pic=imagecreate(250,30);
$black=imagecolorallocate($pic,0,0,0);
$white=imagecolorallocate($pic,255,255,255);
$font="C://WINDOWS//Fonts//simhei.ttf"; //这里的路进需要注意下,必须是字符的路径
$str ='php'.iconv('gb2312','utf-8','面对对象')." www.phpobject.net";
imagettftext($pic,10,0,10,20,$white,$font,$str);
前面我给出一个简单的GD水印实例,只举例说明了使用图片如何水印的,这里给出一个文字水印的简单代码。
<?php
$pic=imagecreate(250,30);
$black=imagecolorallocate($pic,0,0,0);
$white=imagecolorallocate($pic,255,255,255);
$font="C://WINDOWS//Fonts//simhei.ttf";
$str ='php'.iconv('gb2312','utf-8','面对对象')." www.phpobject.net";
imagettftext($pic,10,0,10,20,$white,$font,$str);
header("Content-type: image/jpeg");
$filename='../src/images/photo.jpg';
$im=imagecreatefromjpeg($filename);
imagecopymerge($im,$pic,0,0,0,0,250,30,50);
imagejpeg($im);
?>
看看ImageString的手册就知道了,第二个参数只能用内置或imageloadfont()载入的gdf字体,中文应该是不支持的, 用imagettftext()函数并指定一个truetype字体即可。
ImageTTFText函数实现PHP图像加文字水印功能
一个ImageTTFText函数包含了如下的参数
imagettftext (image,size,angle, x, y,color,fontfile,text)
意思是 imagettftext() 将字符串 text 画到 image 所代表的图像上,从坐标 x,y(左上角为 0, 0)开始,角度为 angle,颜色为 color,使用 fontfile 所指定的 TrueType 字体文件。根据 PHP 所使用的 GD 库的不同,如果 fontfile 没有以 '/'开头,则 '.ttf' 将被加到文件名之后并且会搜索库定义字体路径。
由 x,y 所表示的坐标定义了第一个字符的基本点(大概是字符的左下角)。这和 imagestring() 不同,其 x,y 定义了第一个字符的右上角。
angle 以角度表示,0 度为从左向右阅读文本(3 点钟方向),更高的值表示逆时针方向(即如果值为 90 则表示从下向上阅读文本)。
fontfile 是想要使用的 TrueType 字体的文件名。
text 是文本字符串,可以包含 UTF-8 字符序列(形式为:{)来访问字体中超过前 255 个的字符。
color 是颜色的索引值。使用某颜色索引值的负值具有关闭防混色的效果
例如下面的 img.php 源码,应用则可使用为 <img src="img.php">
====================img.php
<?php
Header("Content-type: image/png");
/*通知浏览器,要输出图像*/
//$im = imagecreate(400 , 300);
/*如果没有指定图像,可以自定义图像的大小*/
$im = imagecreatefromjpeg("gd04.jpg");
$pink = ImageColorAllocate($im, 0 , 0 , 0);
$fontfile = "C:\WINDOWS\Fonts\方正静蕾简体.ttf";
/* $fontfile 字体的路径,视操作系统而定,可以是 simhei.ttf(黑体) , SIMKAI.TTF(楷体) , SIMFANG.TTF(仿宋) ,SIMSUN.TTC(宋体&新宋体) 等 GD 支持的中文字体*/
$str = iconv('GB2312','UTF-8','你想要的字符水印');
/*将 gb2312 的字符集转换成 UTF-8 的字符*/
ImageTTFText($im, 25,10,140,240,$pink,$fontfile,$str);
/* 加入中文水印 */
Imagepng($im);
ImageDestroy($im);
?>
如果需要做成动态URL的水印,则将
$str = iconv('GB2312','UTF-8','你想要的字符水印');
替换使用
$str = iconv('GB2312','UTF-8',$_REQUEST["id"]);
即可
imagettftext和imagestring区别
imagettftext -- 用 TrueType 字体向图像写入文本说明array imagettftext ( resource image, int size, int angle, int x, int y, int color, string fontfile, string text)
imagettftext() 将字符串 text 画到 image 所代表的图像上,从坐标 x,y(左上角为 0, 0)开始,角度为 angle,颜色为 color,使用 fontfile 所指定的 TrueType 字体文件。根据 PHP 所使用的 GD 库的不同,如果 fontfile 没有以 '/'开头,则 '.ttf' 将被加到文件名之后并且会搜索库定义字体路径。
由 x,y 所表示的坐标定义了第一个字符的基本点(大概是字符的左下角)。这和 imagestring() 不同,其 x,y 定义了第一个字符的右上角。
angle 以角度表示,0 度为从左向右阅读文本(3 点钟方向),更高的值表示逆时针方向(即如果值为 90 则表示从下向上阅读文本)。
fontfile 是想要使用的 TrueType 字体的文件名。
text 是文本字符串,可以包含 UTF-8 字符序列(形式为:{)来访问字体中超过前 255 个的字符。
color 是颜色的索引值。使用某颜色索引值的负值具有关闭防混色的效果。
imagettftext() 返回一个含有 8 个单元的数组表示了文本外框的四个角,顺序为坐下角,右下角,右上角,左上角。这些点是相对于文本的而和角度无关,因此“左上角”指的是以水平方向看文字时其左上角。
本例中的脚本将生成一个黑色的 400x30 的 JPEG 图像,其中有白色 Arial 字体写的 "Testing..."。
例子 1. imagettftext() 例子
<?php
header("Content-type: image/jpeg");
$im = imagecreate(400,30);
$white = imagecolorallocate($im, 255,255,255);
$black = imagecolorallocate($im, 0,0,0);
// Replace path by your own font path
imagettftext($im, 20, 0, 10, 20, $black, "/path/arial.ttf",
"Testing... Omega: Ω");
imagejpeg($im);
imagedestroy($im);
?>
本函数同时需要 GD 库和 FreeType 库。
今天仔细研究了下GD的一些相关技术,顺手也研究下GD中文乱码的问题。
使用GD库输出中文字符串,调用imagestring是没有用的。需要使用imagettftext()函数。imagettftext函数的具体使用就参考手册啦。
下面给个使用实例:
$pic=imagecreate(250,30);
$black=imagecolorallocate($pic,0,0,0);
$white=imagecolorallocate($pic,255,255,255);
$font="C://WINDOWS//Fonts//simhei.ttf"; //这里的路进需要注意下,必须是字符的路径
$str ='php'.iconv('gb2312','utf-8','面对对象')." www.phpobject.net";
imagettftext($pic,10,0,10,20,$white,$font,$str);
前面我给出一个简单的GD水印实例,只举例说明了使用图片如何水印的,这里给出一个文字水印的简单代码。
<?php
$pic=imagecreate(250,30);
$black=imagecolorallocate($pic,0,0,0);
$white=imagecolorallocate($pic,255,255,255);
$font="C://WINDOWS//Fonts//simhei.ttf";
$str ='php'.iconv('gb2312','utf-8','面对对象')." www.phpobject.net";
imagettftext($pic,10,0,10,20,$white,$font,$str);
header("Content-type: image/jpeg");
$filename='../src/images/photo.jpg';
$im=imagecreatefromjpeg($filename);
imagecopymerge($im,$pic,0,0,0,0,250,30,50);
imagejpeg($im);
?>
看看ImageString的手册就知道了,第二个参数只能用内置或imageloadfont()载入的gdf字体,中文应该是不支持的, 用imagettftext()函数并指定一个truetype字体即可。

浙公网安备 33010602011771号