当前位置:首页 » 编程语言 » php把文字生成图片

php把文字生成图片

发布时间: 2024-01-04 05:54:55

Ⅰ 求代码示例:php数据库读取出来的文字转成图片显示在页面上

<?php
$Phone=18907975647;#手机号码,具体从数据库怎么读出来,你自己写代码
$im=imagecreate(300,30);#建立一个宽300,高30像素的图片对象
imagecolorallocate($im,255,255,255);#将图片背景填充为白色
$Color=imagecolorallocate($im,0,0,0);#在生成一黑色色颜色,以便写入字符串
imagestring($im,16,0,0,$Phone,$Color);#将字符串写到图片上
header('content-type:image/*');//设置文件头为图片格式
imagepng($im);//输出一个png格式的图片
imagedestroy($im);//销毁图片对象

下面写效果图:

Ⅱ 如何用php把文字转变成图片.也就是往网页输入文字.通过网站后台生成png图片

首先要确定你的环境支持GD库;
程序很简单:
$str = "测试一下";//输入的文字
header("Content-type: image/jpeg");
$im = imagecreate(100, 30) or die("Cannot Initialize new GD image stream");//图片大小

$str=iconv("gb2312","UTF-8",$str);
for($i=0;$i<200;$i++) //加入干扰象素
{
$clr = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%100 , rand()%50 , $clr);
}

//$str="sss";
$black = imagecolorallocate($im, 0, 0, 0);
$fnt = "c:\windows\fonts\simhei.ttf"; //字体文件
ImageTTFText($im, 15, 0, 10, 20, $black, $fnt, $str);
imagejpeg($im);
//imagepng($im);
imagedestroy($im);

Ⅲ PHP文字生成图片

没仔细看你的程序,但是如果你的意思是想加上中文,但是中文是gbk的,然后就出现乱码了的话就对了。
假设你的中文是 $str="这是你的中文内容"
加上下面一句:
$str = iconv("gbk","utf-8",$str)
这时候再把$str加到上面就不会乱码了

Ⅳ php如何生成加粗或者斜体的文字样式图片

  1. 加粗或者斜体的文字可以用php的函数控制.我想你是想生成验证码图片是吗?

  2. 如果是想生成验证么图片有几个函数可以考虑

    imagecreate($length,$height)创建图片.参数是图片的宽度和高度

    imagecolorallocate($image,$r,$g,$b)设置背景色,r b g就是图片的三色rgb参数.这个可以由传入0-255的随机数决定随机的背景色.还可以生成字体色

    imagettftext($_image,$fontSize,mt_rand(-40,70),$codeNX,$fontSize*1.5,$_color,$ttf,$code[$i]);写入随机的文字,这里要一个字一个字写.所以这个函数要循环调用.

    网络了一下 找到了一个类...如下


  3. <?php
    /**
    *安全验证码
    *
    *安全的验证码要:验证码文字扭曲、旋转,使用不同字体,添加干扰码。
    *如果用中文做验证码(我这里不是哦,有兴趣你来改成用中文的),安全度会更好些,但验证码扭曲和旋转是王道,用了字体也算是已经给字体扭曲了,我就不再去给他添一只扭曲的足了。
    *可配置的属性都是一些简单直观的变量,我就不用弄一堆的setter/getter了
    *
    *@author流水孟春<cmpan(at)qq.com>
    *@rightNEWBSD
    *@linkhttp://labs.yulans.cn/YL_Security_Secoder
    *@linkhttp://wiki.yulans.cn/docs/yl/security/secoder
    */
    classYL_Security_Secoder{
    /**
    *验证码的session的下标
    *
    *@varstring
    */
    publicstatic$seKey='sid.sekey.ylans.cn';
    publicstatic$expire=3000;//验证码过期时间(s)
    /**
    *验证码中使用的字符,01IO容易混淆,建议不用
    *
    *@varstring
    */
    publicstatic$codeSet='346789ABCDEFGHJKLMNPQRTUVWXY';
    publicstatic$fontSize=25;//验证码字体大小(px)
    publicstatic$useCurve=true;//是否画混淆曲线
    publicstatic$useNoise=true;//是否添加杂点
    publicstatic$imageH=0;//验证码图片宽
    publicstatic$imageL=0;//验证码图片长
    publicstatic$length=4;//验证码位数
    publicstatic$bg=array(243,251,254);//背景

    protectedstatic$_image=null;//验证码图片实例
    protectedstatic$_color=null;//验证码字体颜色

    /**
    *输出验证码并把验证码的值保存的session中
    *验证码保存到session的格式为:$_SESSION[self::$seKey]=array('code'=>'验证码值','time'=>'验证码创建时间');
    */
    publicstaticfunctionentry(){
    //图片宽(px)
    self::$imageL||self::$imageL=self::$length*self::$fontSize*1.5+self::$fontSize*1.5;
    //图片高(px)
    self::$imageH||self::$imageH=self::$fontSize*2;
    //建立一幅self::$imageLxself::$imageH的图像
    self::$_image=imagecreate(self::$imageL,self::$imageH);
    //设置背景
    imagecolorallocate(self::$_image,self::$bg[0],self::$bg[1],self::$bg[2]);
    //验证码字体随机颜色
    self::$_color=imagecolorallocate(self::$_image,mt_rand(1,120),mt_rand(1,120),mt_rand(1,120));
    //验证码使用随机字体
    $ttf=dirname(__FILE__).'/ttfs/'.mt_rand(1,20).'.ttf';

    if(self::$useNoise){
    //绘杂点
    self::_writeNoise();
    }
    if(self::$useCurve){
    //绘干扰线
    self::_writeCurve();
    }

    //绘验证码
    $code=array();//验证码
    $codeNX=0;//验证码第N个字符的左边距
    for($i=0;$i<self::$length;$i++){
    $code[$i]=self::$codeSet[mt_rand(0,27)];
    $codeNX+=mt_rand(self::$fontSize*1.2,self::$fontSize*1.6);
    //写一个验证码字符
    imagettftext(self::$_image,self::$fontSize,mt_rand(-40,70),$codeNX,self::$fontSize*1.5,self::$_color,$ttf,$code[$i]);
    }

    //保存验证码
    isset($_SESSION)||session_start();
    $_SESSION[self::$seKey]['code']=join('',$code);//把校验码保存到session
    $_SESSION[self::$seKey]['time']=time();//验证码创建时间

    header('Cache-Control:private,max-age=0,no-store,no-cache,must-revalidate');
    header('Cache-Control:post-check=0,pre-check=0',false);
    header('Pragma:no-cache');
    header("content-type:image/png");

    //输出图像
    imagepng(self::$_image);
    imagedestroy(self::$_image);
    }

    /**
    *画一条由两条连在一起构成的随机正弦函数曲线作干扰线(你可以改成更帅的曲线函数)
    *
    *高中的数学公式咋都忘了涅,写出来
    * 正弦型函数解析式:y=Asin(ωx+φ)+b
    *各常数值对函数图像的影响:
    *A:决定峰值(即纵向拉伸压缩的倍数)
    *b:表示波形在Y轴的位置关系或纵向移动距离(上加下减)
    *φ:决定波形与X轴位置关系或横向移动距离(左加右减)
    *ω:决定周期(最小正周期T=2π/∣ω∣)
    *
    */
    protectedstaticfunction_writeCurve(){
    $A=mt_rand(1,self::$imageH/2);//振幅
    $b=mt_rand(-self::$imageH/4,self::$imageH/4);//Y轴方向偏移量
    $f=mt_rand(-self::$imageH/4,self::$imageH/4);//X轴方向偏移量
    $T=mt_rand(self::$imageH*1.5,self::$imageL*2);//周期
    $w=(2*M_PI)/$T;

    $px1=0;//曲线横坐标起始位置
    $px2=mt_rand(self::$imageL/2,self::$imageL*0.667);//曲线横坐标结束位置
    for($px=$px1;$px<=$px2;$px=$px+0.9){
    if($w!=0){
    $py=$A*sin($w*$px+$f)+$b+self::$imageH/2;//y=Asin(ωx+φ)+b
    $i=(int)((self::$fontSize-6)/4);
    while($i>0){
    imagesetpixel(self::$_image,$px+$i,$py+$i,self::$_color);//这里画像素点比imagettftext和imagestring性能要好很多
    $i--;
    }
    }
    }

    $A=mt_rand(1,self::$imageH/2);//振幅
    $f=mt_rand(-self::$imageH/4,self::$imageH/4);//X轴方向偏移量
    $T=mt_rand(self::$imageH*1.5,self::$imageL*2);//周期
    $w=(2*M_PI)/$T;
    $b=$py-$A*sin($w*$px+$f)-self::$imageH/2;
    $px1=$px2;
    $px2=self::$imageL;
    for($px=$px1;$px<=$px2;$px=$px+0.9){
    if($w!=0){
    $py=$A*sin($w*$px+$f)+$b+self::$imageH/2;//y=Asin(ωx+φ)+b
    $i=(int)((self::$fontSize-8)/4);
    while($i>0){
    imagesetpixel(self::$_image,$px+$i,$py+$i,self::$_color);//这里(while)循环画像素点比imagettftext和imagestring用字体大小一次画出(不用这while循环)性能要好很多
    $i--;
    }
    }
    }
    }

    /**
    *画杂点
    *往图片上写不同颜色的字母或数字
    */
    protectedstaticfunction_writeNoise(){
    for($i=0;$i<10;$i++){
    //杂点颜色
    $noiseColor=imagecolorallocate(
    self::$_image,
    mt_rand(150,225),
    mt_rand(150,225),
    mt_rand(150,225)
    );
    for($j=0;$j<5;$j++){
    //绘杂点
    imagestring(
    self::$_image,
    5,
    mt_rand(-10,self::$imageL),
    mt_rand(-10,self::$imageH),
    self::$codeSet[mt_rand(0,27)],//杂点文本为随机的字母或数字
    $noiseColor
    );
    }
    }
    }

    /**
    *验证验证码是否正确
    *
    *@paramstring$code用户验证码
    *@returnbool用户验证码是否正确
    */
    publicstaticfunctioncheck($code){
    isset($_SESSION)||session_start();
    //验证码不能为空
    if(empty($code)||empty($_SESSION[self::$seKey])){
    returnfalse;
    }
    //session过期
    if(time()-$_SESSION[self::$seKey]['time']>self::$expire){
    unset($_SESSION[self::$seKey]);
    returnfalse;
    }

    if($code==$_SESSION[self::$seKey]['code']){
    returntrue;
    }

    returnfalse;
    }
    }


    //useage
    /*
    YL_Security_Secoder::$useNoise=false;//要更安全的话改成true
    YL_Security_Secoder::$useCurve=true;
    YL_Security_Secoder::entry();
    */

    /*
    //验证验证码
    if(!YL_Security_Secoder::check(@$_POST['secode'])){
    print'errorsecode';
    }
    */
  4. 这是效果

Ⅳ 如何将文字用php转换成图片

header ("Content-type: image/png");
function autowrap($fontsize, $angle, $fontface, $string, $width) {
// 这几个变量分别是 字体大小, 角度, 字体名称, 字符串, 预设宽度
$content = "";
// 将字符串拆分成一个个单字 保存到数组 letter 中
for ($i=0;$i<mb_strlen($string);$i++) {
$letter[] = mb_substr($string, $i,1,'utf-8');
}
foreach ($letter as $l) {
$teststr = $content." ".$l;
$testbox = imagettfbbox($fontsize, $angle, $fontface, $teststr);
// 判断拼接后的字符串是否超过预设的宽度
if (($testbox[2] > $width) && ($content !== "")) {
$content .= "\n";
}
$content .= $l;
}
return $content;
}
$text = $_GET['text'];//传过来的要处理的文字
$text = autowrap(14, 0, "msyh.ttf", $text, 250); // 自动换行处理

$im = imagecreate(278,350);
$background = imagecolorallocate($im, 255, 0, 0);
imagecolortransparent($im,$background); //imagecolortransparent() 设置具体某种颜色为透明色,若注释
$A = "img/".$_GET['mo'].".png";
$black = imagecreatefromstring(file_get_contents($A));
$white = imagecolorallocate($black,0x66,0x66,0x66);

imagettftext($black,12,0,30,55,$white,"msyh.ttf",$text); //字体设置部分linux和windows的路径可能不同
imagepng($black);//文字生成的图

Ⅵ 用php代码怎么以背景图片加上文字生成新的图片,然后在标题处绝对调用该图片

<?php
ob_clean(); //清除输出缓存
header("Content-type:image/jpeg"); //设置输出类型
$img="images/test.jpg"; //背景图片名
if(isset($_GET["img"]))$img=$_GET["img"]; //也可以通过img参数传入
$im=imagecreatefromjpeg($img); //读入背景图片
$text="文字内容"; //要加上的文字内容
if(isset($_GET["text"]))$text=$_GET["text"]; //也可以通过text参数传入
$fontFile="xxx.ttf"; //字体文件名,必须要
$fontSize=36; //字体尺寸
$fontColor=ImageColorAllocate($im,0,0,0); //字体颜色,这里是黑色
$textAngle=0; //文字显示的角度,0表示水平显示
$textLeft=20; //文字显示的x坐标
$textTop=60; //文字显示的y坐标
imagefttext($im,$fontSize,$textAngle,$textLeft,$textTop,$fontColor,$fontFile,$text); //把文字覆盖到图片上
Imagejpeg($im); //输出图片
ImageDestroy($im); //销毁图片
?>
把以上文字保存为php文件,比如 img.php
然后在需要调用图片的地方用 <img src="img.php?img=背景图片文件路径&text=要加上的文字"/> 来调用
比如 <img src="img.php?img=images/back.jpg&text=你好"/>

Ⅶ php文字生成图片如何使字体变大

这个内置就是1---5,你试下:imagettftext

热点内容
sqlce数据库 发布:2024-11-30 07:41:21 浏览:725
奇瑞5x配置如何 发布:2024-11-30 07:39:50 浏览:641
魔域数据库修改 发布:2024-11-30 07:37:10 浏览:130
c语言开发者 发布:2024-11-30 07:30:34 浏览:387
西门子触摸屏字体无法编译 发布:2024-11-30 07:26:13 浏览:301
云服务器低 发布:2024-11-30 07:24:47 浏览:300
这首歌密码是多少 发布:2024-11-30 07:19:35 浏览:523
c语言数组最大长度 发布:2024-11-30 07:16:51 浏览:367
在线编程刷题 发布:2024-11-30 07:15:17 浏览:72
监控管理服务器有什么要求 发布:2024-11-30 07:09:46 浏览:172