我们看到58同城出现的电话号码图片,防止别人采集,还有我们发现有些人的信息变成图片为了防止别人的采集,我们应该怎么做呢?这里我给大家演示一下,代码如下
<?php
$text="这是一个测试用字符串!";
$font="SIMLI.TTF";//需要将ttf文件拷贝到同级目录或指定目录
$size=26;//字体大小
$fontcolor="ff0000";//字体颜色
$backcolor="ff4fff";//背景色,如果设0则为透明
$shadowPix=2;//阴影大小,如果为0则没有阴影
$shadowColor="444444";//阴影颜色
$image=textToImgR($text, $font, $size, $fontcolor, $backcolor, $shadowPix, $shadowColor);
header("Content-Type:image/gif");
imagegif($image);
/*
* textToImgR函数允许传入一个字符串并返回一个图片资源
* $text 必填,要转换的字符串
* $font 必填,转换用的字体,需要ttf文件拷贝到同级目录或指定目录
* $size 可选,转换的大小默认14号字体
* $fontcolor 可选,字体颜色,默认黑色 如000000,
* $backcolor 可选,背景颜色,默认透明 如 FFFFFFF白色 0透明
* $shadowPix 可选,阴影大小,默认无阴影 如1或者0透明
* $shadowColor 可选,阴影颜色,默认C0C0C0灰色
*/
function textToImgR($text,$font,$size=14,$fontcolor="000000",$backcolor=0,$shadowPix=0,$shadowColor="C0C0C0"){
//如果传入的字符串为空或者ttf文件不存在则直接返回假
if($text==''||!file_exists($font)){
return false;
}
/*
* imagettfbbox返回字符串四角坐标
0 左下角 X 位置 1 左下角 Y 位置
2 右下角 X 位置 3 右下角 Y 位置
4 右上角 X 位置 5 右上角 Y 位置
6 左上角 X 位置 7 左上角 Y 位置
*/
$boundArr=imagettfbbox($size, 0, $font, $text);
$width=$boundArr[2]-$boundArr[0];//计算字串宽度
$widthImg=$width+5;//准备画板宽度,需要加上一点值。多次试验+5即可
$height=abs($boundArr[7])-abs($boundArr[1]);//字串高度
$heightImg=$height+5;//画板高度
$imgHandle=imagecreatetruecolor($widthImg, $heightImg);//准备画板资源
//准备字串颜色,imagecolorallocate中需要传入10进制格式颜色值,利用字串切割和转换实现。
$fColor=imagecolorallocate($imgHandle, hexdec(substr($fontcolor,0, 2)), hexdec(substr($fontcolor,2, 2)), hexdec(substr($fontcolor,4, 2)));
//准备背景颜色,如果传入的值不是0则正常处理,如果是0则透明化
if($backcolor){
$bColor=imagecolorallocate($imgHandle, hexdec(substr($backcolor,0, 2)), hexdec(substr($backcolor,2, 2)), hexdec(substr($backcolor,4, 2)));
}else{
//fedcba作为透明颜色,此颜色不常被试用
$backcolor="fedcba";
$bColor=imagecolorallocate($imgHandle, hexdec(substr($backcolor,0, 2)), hexdec(substr($backcolor,2, 2)), hexdec(substr($backcolor,4, 2)));
imagecolortransparent($imgHandle,$bColor);//将此颜色透明化
}
imagefilledrectangle($imgHandle, 0, 0, $widthImg, $heightImg, $bColor);//准备一个区域
//如果要求阴影
if($shadowPix>0){
//准备阴影色
$sColor=imagecolorallocate($imgHandle, hexdec(substr($shadowColor,0, 2)), hexdec(substr($shadowColor,2, 2)), hexdec(substr($shadowColor,4, 2)));
//利用imagettftext函数画出阴影图片,注意x,y坐标是以字体左下角为圆心向上填充
imagettftext($imgHandle, $size, 0, $shadowPix+1,$height+$shadowPix+1, $sColor, $font, $text);
}
//画出字体图形
imagettftext($imgHandle, $size, 0, 1, $height+1, $fColor, $font, $text);
//返回该资源
return $imgHandle;
}
?>
欢迎转载,转载请注明来自微度网络-网络技术中心http://yun.widuu.com

发表评论 取消回复