当前位置:首页 > PHP教程 > php应用 > 列表

教你用php将二维码和文字结合到一个背景图片上!

发布:smiling 来源: PHP粉丝网  添加日期:2022-07-05 07:20:18 浏览: 评论:0 

将二维码生成到背景图片上,并且文字生成到背景图上,可以无限制扩增

1.生成前的图片

教你用php将二维码和文字结合到一个背景图片上!

生成后的图片

教你用php将二维码和文字结合到一个背景图片上!

  1. class codeImg 
  2.  
  3.  
  4.     private $date,$img,$main,$width,$height,$target,$white
  5.  
  6.         public function constr($source
  7.  
  8.         { 
  9.  
  10.             $this->date   = '' . date('Ymd') . '/'
  11.  
  12.             $this->img    = $this->date . md5($source) . '.jpg'
  13.  
  14.             $this->main   = imagecreatefromjpeg($source); 
  15.  
  16.             $this->width  = imagesx($this->main); 
  17.  
  18.             $this->height = imagesy($this->main); 
  19.  
  20.             $this->target = imagecreatetruecolor($this->width, $this->height); 
  21.  
  22.             $this->white  = imagecolorallocate($this->target, 255, 255, 255); 
  23.  
  24.                 imagefill($this->target, 0, 0, $this->white); 
  25.  
  26.                 imagecopyresampled($this->target, $this->main, 0, 0, 0, 0, $this->width, $this->height, $this->width, $this->height); 
  27.  
  28.         } 
  29.  
  30.         /** 
  31.  
  32.          * 生成二维码 
  33.  
  34.          * @param  [type]  $website  [生成二维码地址] 
  35.  
  36.          * @param  string  $filename [生成二维路经名称] 
  37.  
  38.          * @param  string  $level    [这个参数可传递的值分别是L(QR_ECLEVEL_L,7%)、M(QR_ECLEVEL_M,15%)、Q(QR_ECLEVEL_Q,25%)、H(QR_ECLEVEL_H,30%),这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比,也就是被覆盖的区域还能识别;] 
  39.  
  40.          * @param  integer $size     [控制生成图片的大小,默认为4] 
  41.  
  42.          * @param  integer $margin [控制生成二维码的空白区域大小] 
  43.  
  44.          * @return [type]            [description] 
  45.  
  46.          */ 
  47.  
  48.           public function qrencode($website$filename = false, $level = "L"$size = 4, $margin = 2) 
  49.  
  50.           { 
  51.  
  52.                 include "./phpqrcode/qrlib.php"
  53.  
  54.                     QRcode::png($website$filename$level$size, 2); 
  55.  
  56.           } 
  57.  
  58.           /** 
  59.  
  60.          * 把二维码图片生成到背景图片上及文字 
  61.  
  62.          * @param  string  $source      背景图片 
  63.  
  64.          * @param  string  $text1       文字描述 
  65.  
  66.          * @param  string  $child1      二维码图 
  67.  
  68.          * @param  integer $textwidth   文字横向位置 
  69.  
  70.          * @param  integer $textherght  文字高度 
  71.  
  72.          * @param  integer $$fontSize   字体大小 
  73.  
  74.          * @param  integer $cate1,$cate2,$cate3 颜色表 
  75.  
  76.          * @param  string $font         文字字体 
  77.  
  78.          * @return [type]               [description] 
  79.  
  80.          */ 
  81.  
  82.          public function generateFont($source$text1$textwidth$textherght$fontSize = 18, $cate1 = 255, $cate2 = 250, $cate3 = 250, $font = './font/fangsong_GB2312.ttf'
  83.  
  84.          { 
  85.  
  86.             $this->constr($source); 
  87.  
  88.                 $fontColor = imagecolorallocate($this->target, $cate1$cate2$cate3); //字的RGB颜色 
  89.  
  90.                 $fontBox   = imagettfbbox($fontSize, 0, $font$text1); //文字水平居中实质 
  91.  
  92.                 imagettftext($this->target, $fontSize, 0, $textwidth$textherght$fontColor$font$text1); 
  93.  
  94.                 $this->createImg(); 
  95.  
  96.                 return $this->img; 
  97.  
  98.          } 
  99.  
  100.           /** 
  101.  
  102.          * [generateImg description] 
  103.  
  104.          * @param  string  $source        背景图片 
  105.  
  106.          * @param  string  $codeurl       二维码图片 
  107.  
  108.          * @param  integer  $sourcewidth  二维码横向所在位置 
  109.  
  110.          * @param  integer  $sourceheight 二维码高度位置 
  111.  
  112.          * @param  integer $codewidth    二维码宽度 
  113.  
  114.          * @param  integer $codeheight   二维码高度 
  115.  
  116.          * @return [type]                [description] 
  117.  
  118.          */ 
  119.  
  120.           public function generateImg($source$codeurl$sourcewidth$sourceheight$codewidth = 100, $codeheight = 100) 
  121.  
  122.           { 
  123.  
  124.             $this->constr($source); 
  125.  
  126.                     $child1 = imagecreatefrompng($codeurl); 
  127.  
  128.                     $codewidth = $codewidth > 0 ? $codewidth :imagesx($child1); 
  129.  
  130.                     $codeheight = $codeheight > 0 ? $codeheight : imagesy($child1); 
  131.  
  132.                     imagecopyresampled($this->target, $child1$sourcewidth$sourceheight, 0, 0, $codewidth$codeheight,imagesx($child1),imagesy($child1)); 
  133.  
  134.                     imagedestroy($child1); 
  135.  
  136.                     $this->createImg(); 
  137.  
  138.                     return $this->img; 
  139.  
  140.         } 
  141.  
  142.         function createImg() 
  143.  
  144.         { 
  145.  
  146.             @mkdir('./' . $this->date); 
  147.  
  148.                  imagejpeg($this->target, './' . $this->img, 95); 
  149.  
  150.                     imagedestroy($this->main); 
  151.  
  152.                     imagedestroy($this->target); 
  153.  
  154.         } 
  155.  
  156.     } 
  157.  
  158.         $source       = "./img/1000.jpg"
  159.  
  160.         $codeImg = new codeImg($source); 
  161.  
  162.         $website = "http://www.baidu.com"
  163.  
  164.         $codeurl = "./temp/code.png"
  165.  
  166.         $codeImg->qrencode($website$codeurl); 
  167.  
  168.         ################################# 
  169.  
  170.         $text         = "开始了开始了hahhah呵呵"
  171.  
  172.         $textwidth    = 100; 
  173.  
  174.         $textherght   = 50; 
  175.  
  176.         $generateFont = $codeImg->generateFont($source$text$textwidth$textherght); 
  177.  
  178.         ########################################################## 
  179.  
  180.         $sourcewidth  = 200; 
  181.  
  182.         $sourceheight = 150; 
  183.  
  184.         $generateImg  = $codeImg->generateImg($generateFont$codeurl$sourcewidth$sourceheight); 
  185.  
  186.         echo "<img src='" . $generateImg . "'>"
  187.  
  188.       
  189.  
  190.     ``

Tags: php二维码 php背景图片

分享到: