public function test()
{$template = ROOT_PATH . "public/uploads/back.png";$x = "70";$y = "30";$code = ["尚勤楼","二年一班","112233"];$qrcode = $this->create_qrcode($mac,$type);$qrcode_url = ROOT_PATH . "public/uploads/".$v['mac']."_qrcode.png";$curl = new Curl();$curl->download($qrcode, $qrcode_url);$filename = $addr."_".$name."_".$mac;$pic = $this->getActivityImg($template, $qrcode_url, $x, $y, $code, time(), $filename);$pic = "/public" .explode("public",$pic)[1];return $pic;
}
/*** api生成二维码(测试用) * @param string $mac   设备MAC* @param string $type  设备TYPE*/
public function create_qrcode($mac,$type)
{$ip = empty($ip) ? $_SERVER['HTTP_HOST'] : $ip;$port = empty($port) ? $_SERVER['SERVER_PORT'] : $port;$mac = empty($mac) ? "112233445566" : $mac;$type = empty($type) ? "0A" : $type;$data =  ["ip"=>$ip,"port"=>$port,"mac"=>$mac,"type"=>$type];$data = json_encode($data);$http = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && $_SERVER['HTTPS'] != 'off') ? 'https' : 'http';//$url=urlencode("{$http}://{$ip}:{$port}/?m=Index&c=index&a=index_qu&mac={$mac}&type={$type}");// $url=urlencode("{$http}://{$_SERVER['HTTP_HOST']}:{$_SERVER['SERVER_PORT']}/?ip={$ip}&port={$port}&mac={$mac}&type={$type}");$url=urlencode("{$data}");$qrcode = 'https://api.qrserver.com/v1/create-qr-code/?size=180x180&data=' . $url; return $qrcode;
}/*** 合并二维码生成图片** @param [type] $template  背景图* @param [type] $qr_url    二维码地址* @param [type] $x         x轴坐标* @param [type] $y         y轴坐标* @param [type] $code      图片文字说明* @param [type] $jointime  创建时间* @param [type] $mac       mac* @return void*/
private function getActivityImg($template, $qr_url, $x, $y, $code, $jointime, $filename) {$time = date("Ym", $jointime);//创建文件夹// $dir = iconv("UTF-8", "GBK", ROOT_PATH."public/uploads/" . $time . "");$dir = iconv("UTF-8", "GBK", ROOT_PATH."public/uploads/");if (!file_exists($dir)) {mkdir($dir, 0777, true);}//合成带logo的二维码图片跟 模板图片--------------start$path_1 = $template;$path_2 = $qr_url;$image_1 = imagecreatefrompng($path_1);$image_2 = imagecreatefrompng($path_2);// $image_2 = imagecreatefromstring(file_get_contents($path_2));$image_3 = imageCreatetruecolor(imagesx($image_1), imagesy($image_1));$color = imagecolorallocate($image_3, 0, 0, 0);//在图片上加文字$font_file = ROOT_PATH . "public/static/fonts/simkai.ttf"; //字体文件$font_color_1 = ImageColorAllocate($image_1, 100, 100, 100);imagettftext($image_1, 20, 0, 50, 300, $font_color_1, $font_file, "位置:" . $code[0]); //添加文字imagettftext($image_1, 20, 0, 50, 350, $font_color_1, $font_file, "名称:" . $code[1]);imagettftext($image_1, 20, 0, 50, 400, $font_color_1, $font_file, "MAC :" . $code[2]);imageline($image_1, 100, 100, 100, 100, $font_color_1);//在图片上加文字endimagefill($image_3, 0, 0, $color);imageColorTransparent($image_3, $color);imagecopyresampled($image_3, $image_1, 0, 0, 0, 0, imagesx($image_1), imagesy($image_1), imagesx($image_1), imagesy($image_1));imagecopymerge($image_3, $image_2, $x, $y, 0, 0, imagesx($image_2), imagesy($image_2), 100);//合成带logo的二维码图片跟 模板图片--------------end//输出到本地文件夹$source = ROOT_PATH.'public/uploads/' . $filename . '.png'; //原图$EchoPath = ROOT_PATH.'public/uploads/'. $filename .'.jpg'; //压缩后图片imagepng($image_3, $source);$this->handlePic($source);imagedestroy($image_3);unlink($source);unlink($path_2);//返回生成的路径return $EchoPath;
}/*** 图片压缩* @param $srcPathName*/
public function handlePic($srcPathName)
{$srcFile = $srcPathName;$srcFileExt = strtolower(trim(substr(strrchr($srcFile, '.'), 1)));if ($srcFileExt == 'png') {$dstFile = str_replace('.png', '.jpg', $srcPathName);$photoSize = GetImageSize($srcFile);$pw = $photoSize[0];$ph = $photoSize[1];$dstImage = ImageCreateTrueColor($pw, $ph);imagecolorallocate($dstImage, 255, 255, 255);//读取图片$srcImage = ImageCreateFromPNG($srcFile);//合拼图片imagecopyresampled($dstImage, $srcImage, 0, 0, 0, 0, $pw, $ph, $pw, $ph);imagejpeg($dstImage, $dstFile, 70);imagedestroy($srcImage);}
}

php api获取二维码、组合生成图片相关推荐

  1. 微信小程序学习之路——API获取二维码

    获取二维码 通过后台接口可以获取小程序任意页面的二维码,扫描该二维码可以直接进入小程序对应的页面. 可以使用开发工具 1.02.1803130 及以后版本通过二维码编译功能调试所获得的二维码 为满足不 ...

  2. IOS7使用原生API进行二维码和条形码的扫描

    使用IOS7原生API进行二维码条形码的扫描 IOS7之前,开发者进行扫码编程时,一般会借助第三方库.常用的是ZBarSDK,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析 ...

  3. 微信小程序获取二维码scene报错40129

    java后端向微信服务端https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN请求获取带参二维码的时候,由于 ...

  4. EasyAPI基于电子发票API接口二维码小票对接方案

    本对接方案的好处是,客户无需为增加发票管理而增加数据库表或者字段.无需研究复杂的税务接口.无需关心税收分类编码.税率等,实现无缝集成. 名称解释: 名称 解释 备注 用户标识 客户系统中的用户唯一编号 ...

  5. 微信小程序--获取二维码(java后端)

    获取二维码 根据业务需要,用户点击分享当前页面,需将小程序当前页面生成二维码,其他用户扫描二维码,跳转至分享页面: 官方文档地址 获取二维码 请求参数 封装请求参数发送请求,请求成功,微信会返回的图片 ...

  6. 支付宝获取二维码充值

    1.获取充值二维码 controller层获取二维码 @ResponseBody @RequestMapping(value = "/alipay-qrcode", produce ...

  7. 微信小程序获取二维码

    原文链接:https://blog.csdn.net/w410589502/article/details/77702358/ 版权归原有博主,此处为了方便自己是查看,故copy一份,B接口调用,亲测 ...

  8. android 从图片获取二维码

    之前的博客我记得讲过关于扫描二维码的内容,昨天,组长让我不仅可以扫描获取二维码,还可以通过图片获取里面的二维码.比如别人拍了一张二维码的照片,发送给你,app应该可以获取图片的二维码. 自己在网上查了 ...

  9. 微信小程序获取二维码中URL中带的参数

    解析微信小程序获取二维码中的url参数 onLoad: function (options) { console.log(options) let qrUrl = decodeURIComponent ...

最新文章

  1. 苹果6屏幕多大_相较前段新鲜感满满,谈谈苹果12这几天的实际感受
  2. Tableau实战系列浏览 Tableau 环境(六) -工作簿和工作表
  3. 12省联考2019口胡
  4. 两物体的相对速度公式_最全物理公式合集,高考这一份就够了!
  5. Redis学习笔记(11)——Redis缓存集群方案
  6. 标题在上边框中的html(fieldset标签)
  7. ionic3 cordova ionic-native插件
  8. Qt工作笔记-QTreeWidget求总结点数以及此树中最多孩子的个数(非递归)
  9. 寒门问题少年到计算机博士,硅谷穷小子是如何成为“创业之神”
  10. DevExtreme移动开发框架
  11. 性能测试--jmeter如何发送get请求【3】
  12. qt中如何刷新一下屏幕_感情维护:如何在恋爱关系中分开一下,然后更坚强地回来...
  13. 蓝桥杯省赛考点_如何评价2018第九届蓝桥杯省赛?
  14. PCB贴片元器件手工焊接技巧及要点
  15. 注意力(Attention)
  16. 输入一个英文字母(可能是大写,也可能是小写),输出该字母在字母表中的序号(’a’和’A’的序号为1)
  17. 17 Flask mega-tutorial 第17章 在Linux上部署(腾讯云 Ubuntu)【极其详细的部署过程】
  18. 居民身份证阅读器产品开发学习心得(再谈标准-软件-协议)
  19. android EditText 属性
  20. 移动开发者大会 -- 后感

热门文章

  1. 微服务、SOA、ESB比较
  2. 流媒体服务器与web客户端插件的配置与搭建(Darwin Streaming server + Quictime plugin)
  3. 官宣!首个大模型兴趣小组开放申请,专注大模型应用落地
  4. Nginx的临时文件权限问题
  5. 电火花线切割编程软件EDMCAD软件源码
  6. [深度学习论文笔记]Modality-aware Mutual Learning for Multi-modal Medical Image Segmentation
  7. 给求职者提个醒,不要被无良公司骗了,关于“年终奖金”和“13/14薪制度“。...
  8. mysql my-default.ini_my-default.ini文件
  9. C++各大有名库的介绍——综合
  10. 高数下册作业题目及答案