PHP生成中间带LOGO或水印图的二维码图片的函数

《PHP生成中间带LOGO或水印图的二维码图片的函数》要点:
本文介绍了PHP生成中间带LOGO或水印图的二维码图片的函数,希望对您有用。如果有疑问,可以联系我们。

此函数是PHP给现成的二维码添加中间水印或LOGO,有三种处理方式:

1、覆盖原来的二维码图片

2、直接保存为另外指定名称的图片

3、不保存,直接输出显示。

具体体哪一种方式,参$saveOtherImg参数值说明。

一、调用示例:

$markImg = 'wechat.png'; // 水印图或LOGO
$qrImg = "base.jpg"; // 现有的二维码图片

#addMToQrcode ($markImg, $qrImg,false);  #直接显示不保存
addImgToQrcode ($markImg,'base_logo.png'); #添加水印并保存为base_logo.png

二、函数代码:

/**
 * 给二维码加中间水印图
 * 来源: http://www.jb51.cc  可自由使用,请保留注释信息
 * @param string $markImg  要放中间的小水印图
 * @param string $QRcodeImg  原二维码
 * @param string $saveOtherImg  三种情形:1、直接提供文件名,则另存,2、默认$saveOtherImg===''则覆盖 $QRcodeImg,3、如果 $saveOtherImg ===false 则直接显示不保存
 * @return bool  失败返回false
 */
function addImgToQrcode($markImg='', $QRcodeImg='', $saveOtherImg='')
{
       if(empty($markImg) || empty($QRcodeImg)) return false;
       #if(! file_exists ($QRcodeImg)) return false;

       $QR = imagecreatefromstring(file_get_contents($QRcodeImg));
       $img = imagecreatefromstring(file_get_contents($markImg));
       $QR_width = imagesx($QR);//二维码图片宽度
       $QR_height = imagesy($QR);//二维码图片高度
       $img_width = imagesx($img);// $markImg 图片宽度
       $img_height = imagesy($img);// $markImg 图片高度
       $img_qr_width = $QR_width / 5;
       $scale = $img_width/$img_qr_width;
       $img_qr_height = $img_height/$scale;
       $from_width = ($QR_width - $img_qr_width) / 2;
       //重新组合图片并调整大小
       imagecopyresampled($QR, $img, $from_width, 0, $img_qr_width,                          $img_qr_height, $img_width, $img_height);

       //输出图片:$saveOtherImg===''则覆盖 $QRcodeImg,如果 $saveOtherImg ===false 则直接显示不保存  ,       if(!empty($saveOtherImg))      {
              $ext = trim (strrchr ($saveOtherImg,'.'),'.');
              if(!empty($ext)) strtolower ($ext);
              else $ext = trim (strrchr ($QRcodeImg,'.');
              if($ext=='jpg') $ext = 'jpeg';
              $funcs = "image".$ext;

              $funcs($QR, $saveOtherImg);
       }
       elseif($saveOtherImg===false)  #直接显示不保存
       {
              $ext = trim (strrchr ($QRcodeImg,'.');
              if(!empty($ext)) strtolower ($ext);
              if($ext=='jpg') $ext = 'jpeg';
              $funcs = "image".$ext;
              Header("Content-type: image/".$ext);
              $funcs($QR);
       }
       elseif ($saveOtherImg==='') #则覆盖 $QRcodeImg
       {
              $ext = trim (strrchr ($QRcodeImg,'.');
              if(!empty($ext)) strtolower ($ext);
              if($ext=='jpg') $ext = 'jpeg';
              $funcs = "image".$ext;
              $funcs($QR, $QRcodeImg);
       }
       return true;
}

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。