帝国CMS字段转换为图片插件,支持中文英文数字生成

2018-06-24 00:47:26 围观 :

 帝国CMS任意字段转换为图片插件,支持中文英文数字生成,文章标题,电话号码、QQ号码均可,

使用方法:
一、将以下代码存为index.php

本帖隐藏的内容

  1. <?php
  2. mb_internal_encoding("UTF-8");//设置编码
  3. header ('Content-type:image/png');
  4. require('../../class/connect.php');//引入数据库配置文件和公共函数文件
  5. require('../../class/db_sql.php');//引入数据库操作文件
  6. $link=db_connect();//连接MYSQL
  7. $empire=new mysqlquery();//声明数据库操作类
  8. $editor=1;//声明目录层次
  9. $classid=(int)$_GET['classid'];
  10. $id=(int)$_GET['id'];
  11. $area=addslashes($_GET['area']);
  12. $r1=$empire->fetch1("select tbname from {$dbtbpre}enewsclass where classid=$classid");
  13. $tbname=$r1['tbname'];
  14. $r=$empire->fetch1("select $area from {$dbtbpre}ecms_$tbname where classid=$classid and id=$id");
  15. /*16进制颜色转换为RGB色值*/
  16. function hex2rgb($hexColor){
  17.     $color=str_replace('#','',$hexColor);
  18.     if(strlen($color)>3){
  19.         $rgb = array('r'=>hexdec(substr($color,0,2)),'g'=>hexdec(substr($color,2,2)),'b'=>hexdec(substr($color,4,2)));
  20.     }else{
  21.         $color=str_replace('#','',$hexColor);
  22.         $r=substr($color,0,1).substr($color,0,1);
  23.         $g=substr($color,1,1).substr($color,1,1);
  24.         $b=substr($color,2,1).substr($color,2,1);
  25.         $rgb=array('r'=>hexdec($r),'g'=>hexdec($g),'b'=>hexdec($b));
  26.     }
  27.     return $rgb;
  28. }
  29. /*各种参数*/
  30. $width=(int)$_GET['w']?(int)$_GET['w']:300;
  31. $hegih=(int)$_GET['h']?(int)$_GET['h']:50;
  32. $ff=$_GET['ff']?$_GET['ff']:'msyh';
  33. $fontface='font/'.$ff.'.ttf';
  34. $fontsize=$_GET['fz']?$_GET['fz']:12;
  35. $bcolor=$_GET['bc']?$_GET['bc']:'fff';
  36. $tcolor=$_GET['tc']?$_GET['tc']:'000';
  37. $b=hex2rgb($bcolor);//背景色
  38. $t=hex2rgb($tcolor);//文字色
  39. /*中英文换行等处理*/
  40. function str_to_image($fontsize,$angle,$fontface,$string,$width){//这几个变量分别是 字体大小, 角度, 字体名称, 字符串, 预设宽度
  41.     $content="";//将字符串拆分成一个个单字 保存到数组 letter 中
  42.     for($i=0;$i<mb_strlen($string);$i++){
  43.         $letter[]=mb_substr($string,$i,1);
  44.     }
  45.     foreach($letter as $l){
  46.         $teststr=$content." ".$l;
  47.         $testbox=imagettfbbox($fontsize,$angle,$fontface,$teststr);
  48. //判断拼接后的字符串是否超过预设的宽度
  49.         if (($testbox[2]>$width)&&($content!=="")){
  50.             $content.="\n";
  51.         }
  52.         $content.=$l;
  53.     }
  54.     return $content;
  55. }
  56. $bg=imagecreate($width,$hegih);//创建白色画布
  57. $background_color=imagecolorallocate($bg,$b['r'],$b['g'],$b['b']);//画布背景颜色 
  58. $text_color=imagecolorallocate($bg,$t['r'],$t['g'],$t['b']);//内容文字颜色
  59. /**/
  60. if($r[area]=''){
  61.     $text='No Data';
  62. }else{
  63.     $text=stripslashes($r[$area]);
  64. }
  65. $text=str_to_image($fontsize,0,$fontface,$text,$width-10);//自动换行处理
  66. //若文件编码为 GB2312 请将下行的注释去掉
  67. //$text = iconv("GB2312", "UTF-8", $text);
  68. imagettftext($bg,$fontsize,0,10,20,$text_color,$fontface,$text);//输出图像
  69. imagepng($bg);
  70. imagedestroy($bg);
  71. db_close();//关闭MYSQL链接
  72. $empire=null;//注消操作类变量
  73. ?>
复制代码



二、将index.php放在/e/extend/topic/下

三、在要显示图片字段的地方加入以下代码即可

  1. <img src="[!--news.url--]e/extend/topic/index.php?classid=[!--classid--]&id=[!--id--]&w=500&h=100&area=title&ff=msyh&fz=12&bc=fff&tc=000" />
复制代码



参数说明:
classid=信息所属栏目ID
id=信息ID
w=宽 
h=高
area=你的字段(如:qq)
fz=字号大小
bc=图片背景颜色 (颜色为16进制代码)
tc=显示文字颜色 (颜色为16进制代码)
ff=字体名称,ttf格式的,放在/e/extend/topic/font/下。
font目录下为你使用的字体存放,这个为必须。


插件效果截图:  
本插件基于PHP GD库原创制作,本插件没有GBK版本,GBK版本需要稍作转码修改(内含说明)。

    匿名评论
  • 评论
人参与,条评论

相关文章

    无相关信息
网站分类