将一组字符串转成图片输出

widuu 2012-11-24 PHP技术 4,146 0 喜欢 (0)

我们看到58同城出现的电话号码图片,防止别人采集,还有我们发现有些人的信息变成图片为了防止别人的采集,我们应该怎么做呢?这里我给大家演示一下,代码如下
[php]
<?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;
    }
?>
[/php]
欢迎转载,转载请注明来自微度网络-网络技术中心http://www.widuu.com

转载请注明来自微度网络,本文标题:《将一组字符串转成图片输出》

喜欢 0 发布评论
Top