100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 微信小程序生成分享带参数二维码图片 并添加文字功能

微信小程序生成分享带参数二维码图片 并添加文字功能

时间:2020-02-21 16:19:03

相关推荐

微信小程序生成分享带参数二维码图片 并添加文字功能

笔者最近接到一个新的任务,不是很难的功能,就是之前没有接触过,后端生成带参数的小程序二维码图片,并在图片下面添加一些文字。想在将代码分享给大家,期望可以给大家提供帮助。

一、首先生成小程序的分享二维码有三种方式

接口 A: 适用于需要的码数量较少的业务场景 生成小程序码,可接受 path 参数较长,生成个数受限。接口 B:适用于需要的码数量极多的业务场景 生成小程序码,可接受页面参数较短,生成个数不受限。接口 C:适用于需要的码数量较少的业务场景 生成二维码,可接受 path 参数较长,生成个数受限。 (已经移除)

具体的情况请参照 获取小程序码 | 微信开放文档

二、笔者使用第一种方式来生成分享二维码

1、第一步,获取access_token

private String getAccessToken(){String result = null;try {// 自己的 appid和secretresult = HttpUtil.get("https://api./cgi-bin/token" +"?grant_type=client_credential&appid=yourappId&secret=yoursecret",null,null);} catch (Exception e) {e.printStackTrace();}JSONObject jsonObject = JSON.parseObject(result);result = jsonObject.getString("access_token");System.out.println(result);return result;}

2、第二步,请求分享二维码的二进制流

String URL = "https://api./wxa/getwxacode?access_token=" + accessToken;JSONObject jsonObject = new JSONObject();jsonObject.put("path","pages/lsjindex/lsjindex");InputStream inputStream = null;try {inputStream = HttpUtil.postStream(URL, jsonObject.toJSONString(), null);} catch (Exception e) {e.printStackTrace();}BufferedImage bi = ImageIO.read(inputStream);

3、拼接文字

public BufferedImage createNewPic(String title,BufferedImage bi){BufferedImage image = new BufferedImage(500, 550, BufferedImage.TYPE_INT_RGB);//设置图片的背景色Graphics2D main = image.createGraphics();main.setColor(Color.white);main.fillRect(0, 0, 500, 550);//***********************插入中间广告图Graphics mainPic = image.getGraphics();if(logo!=null){mainPic.drawImage(logo, 40, 40, 400, 400, null);mainPic.dispose();}//***********************页面底部文字Graphics titleG = image.createGraphics();//设置区域颜色//titleG.setColor(Color.white);//填充区域并确定区域大小位置//titleG.fillRect(450, 50, 450, 50);//设置字体颜色,先设置颜色,再填充内容titleG.setColor(Color.BLACK);//设置字体Font titleFont = new Font("宋体", Font.BOLD, 14);titleG.setFont(titleFont);titleG.drawString(title, 200, 500);return image;}

4、最后生成图片并保存

File targetFile = new File("1.png");ImageIO.write(image, "png", targetFile);

完成的代码如下:

public class SmallAppTest {public static void main(String[] args) throws IOException {SmallAppTest test = new SmallAppTest();// 获得access_tokenString accessToken = test.getAccessToken();// 获得小程序二维码// POST https://api./wxa/getwxacode?access_token=ACCESS_TOKENString URL = "https://api./wxa/getwxacode?access_token=" + accessToken;JSONObject jsonObject = new JSONObject();jsonObject.put("path","pages/lsjindex/lsjindex");InputStream inputStream = null;try {inputStream = HttpUtil.postStream(URL, jsonObject.toJSONString(), null);} catch (Exception e) {e.printStackTrace();}BufferedImage bi = ImageIO.read(inputStream);BufferedImage image = test.createNewPic("测试", bi);// 加文字File targetFile = new File("1.png");ImageIO.write(image, "png", targetFile);// 关闭流inputStream.close();}public BufferedImage createNewPic(String title,BufferedImage logo){BufferedImage image = new BufferedImage(500, 550, BufferedImage.TYPE_INT_RGB);//设置图片的背景色Graphics2D main = image.createGraphics();main.setColor(Color.white);main.fillRect(0, 0, 500, 550);//***********************插入中间广告图Graphics mainPic = image.getGraphics();if(logo!=null){mainPic.drawImage(logo, 40, 40, 400, 400, null);mainPic.dispose();}//***********************页面头部Graphics titleG = image.createGraphics();//设置区域颜色//titleG.setColor(Color.white);//填充区域并确定区域大小位置//titleG.fillRect(450, 50, 450, 50);//设置字体颜色,先设置颜色,再填充内容titleG.setColor(Color.BLACK);//设置字体Font titleFont = new Font("宋体", Font.BOLD, 14);titleG.setFont(titleFont);titleG.drawString(title, 200, 500);return image;}private String getAccessToken(){String result = null;try {result = HttpUtil.get("https://api./cgi-bin/token" +"?grant_type=client_credential&appid=appId&secret=secret",null,null);} catch (Exception e) {e.printStackTrace();}JSONObject jsonObject = JSON.parseObject(result);result = jsonObject.getString("access_token");System.out.println(result);return result;}}

用到的工具类:Http工具类

Http工具类-Java工具类资源-CSDN下载

结果图

推荐:史上最全的java开发工具类 地址:GitHub - EricLoveMia/JavaTools: 基于JDK8 的工具类合集 maven项目

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。