利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法


Posted in Javascript onMarch 29, 2019

有时候我们可能需要在其他的网页上展示我们自己的小程序中某些页面的小程序码,这种时候,我们需要用到小程序的生成小程序码的相关接口。

工具选型

我们仍然选用简单方便的weixin-java-miniapp来完成此功能。

项目配置

详见我们的另一篇文章点此进入

生成小程序码的相关类型

小程序码的其他生成方式以及相关类型在这篇文章点此进入中介绍的较为详细,此处不再赘述,以下仅以生成不限制张数的这种类型来做一个示例。

生成小程序码图片

先获取小程序的service实例wxMaService。

再获取二维码相关操作的service实例

// 获取小程序服务实例
WxMaService wxMaService = WxMaConfiguration.getWxMaService();

// 获取小程序二维码生成实例
WxMaQrcodeService wxMaQrcodeService = wxMaService.getQrcodeService();

// 设置小程序二维码线条颜色为黑色
WxMaCodeLineColor lineColor = new WxMaCodeLineColor("0", "0", "0");

// 生成二维码图片字节流(此处也可以生成File类型,如果想将图片文件保存到服务器就生成File类型,此处生成byte[]类型,方便直接返回文件流到前端)
byte[] qrCodeBytes = null;
qrCodeBytes = wxMaQrcodeService.createWxaCodeUnlimitBytes(String.valueOf(id), null, 430, false, lineColor, false);

返回文件流

将文件流写到response中,相关示例代码如下:

@RestController
@RequestMapping("/qrCode")
public class QrCodeController {
 private static final Logger logger = LoggerFactory.getLogger(QrCodeController.class);

 @GetMapping("/getMiniappQrCode/{id}")
 public void getMiniappQrCode(@PathVariable("id") Long id, HttpServletRequest request, HttpServletResponse response) throws Exception{
  // 获取小程序服务实例
  WxMaService wxMaService = WxMaConfiguration.getWxMaService();
  // 获取小程序二维码生成实例
  WxMaQrcodeService wxMaQrcodeService = wxMaService.getQrcodeService();

  // 设置小程序二维码线条颜色为黑色
  WxMaCodeLineColor lineColor = new WxMaCodeLineColor("0", "0", "0");

  // 生成二维码图片字节流
  byte[] qrCodeBytes = null;
  try{
   qrCodeBytes = wxMaQrcodeService.createWxaCodeUnlimitBytes(String.valueOf(id), null, 430, false, lineColor, false);
  } catch(Exception e){
   logger.error("生成小程序码出错", e);
  }

  // 设置contentType
  response.setContentType("image/png");

  // 写入response的输出流中
  OutputStream stream = response.getOutputStream();
  stream.write(qrCodeBytes);
  stream.flush();
  stream.close();
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
表单提交验证类
Jul 14 Javascript
[推荐]javascript 面向对象技术基础教程
Mar 03 Javascript
在浏览器中获取当前执行的脚本文件名的代码
Jul 19 Javascript
js获取URL的参数的方法(getQueryString)示例
Sep 29 Javascript
深入理解javascript构造函数和原型对象
Sep 23 Javascript
JS模拟实现方法重载示例
Aug 03 Javascript
bootstrap table插件的分页与checkbox使用详解
Jul 23 Javascript
微信小程序实现animation动画
Jan 26 Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 Javascript
JavaScript arguments.callee作用及替换方案详解
Sep 02 Javascript
vuex刷新后数据丢失的解决方法
Oct 18 Javascript
Vue Element-ui表单校验规则实现
Jul 09 Vue.js
微信小程序实现获取小程序码和二维码java接口开发
Mar 29 #Javascript
详解vue项目打包步骤
Mar 29 #Javascript
jQuery实现动态添加和删除input框代码实例
Mar 29 #jQuery
Vue项目history模式下微信分享爬坑总结
Mar 29 #Javascript
vue中使用微信公众号js-sdk踩坑记录
Mar 29 #Javascript
微信小程序学习笔记之本地数据缓存功能详解
Mar 29 #Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
Mar 29 #Javascript
You might like
用PHP动态创建Flash动画
2006/10/09 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
js对象数组按属性快速排序
2011/01/31 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
Python文件读取的3种方法及路径转义
2015/06/21 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
vscode 远程调试python的方法
2017/12/01 Python
Django中url的反向查询的方法
2018/03/14 Python
python破解zip加密文件的方法
2018/05/31 Python
python实现扫描ip地址的小程序
2019/04/16 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
python之列表推导式的用法
2019/11/29 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
Django celery异步任务实现代码示例
2020/11/26 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
物流专业毕业生推荐信范文
2013/11/18 职场文书
升旗仪式主持词
2014/03/19 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
小学生综合素质评语
2014/04/23 职场文书
文艺晚会开场白
2015/05/29 职场文书
奔腾年代观后感
2015/06/09 职场文书
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL