如果你会建网站,怎样做学校网站,广告设计公司售后服务承诺书,表白网站制作器1.生成基础二维码 /*** 生成微信小程序二维码#xff0c;带参数,最终转成base64* param page 当前小程序相对页面 必须是已经发布的小程序存在的页面(否则报错)#xff0c;例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里)#xff0c;如果不… 1.生成基础二维码 /*** 生成微信小程序二维码带参数,最终转成base64* param page 当前小程序相对页面 必须是已经发布的小程序存在的页面(否则报错)例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里)如果不填写这个字段默认跳主页面* param scene 最大32个可见字符只支持数字大小写英文以及部分特殊字符!#$()*,/:;?-._~其它字符请自行编码为合法字符(因不支持%中文无法使用 urlencode 处理请使用其他编码方式)* param accessToken 接口调用凭证*/public static String generateQrCode(String page, String scene,String accessToken) {BufferedImage bi null;try {URL url new URL(https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token accessToken);HttpURLConnection httpURLConnection (HttpURLConnection)url.openConnection();httpURLConnection.setRequestMethod(POST);httpURLConnection.setDoOutput(true);httpURLConnection.setDoInput(true);PrintWriter printWriter new PrintWriter(httpURLConnection.getOutputStream());JSONObject paramJson new JSONObject();paramJson.put(scene, scene);paramJson.put(page, page);paramJson.put(width, 430);paramJson.put(auto_color, false);JSONObject lineColor new JSONObject();lineColor.put(r, 0);lineColor.put(g, 0);lineColor.put(b, 0);paramJson.put(line_color, lineColor);printWriter.write(paramJson.toString());printWriter.flush();BufferedInputStream bis new BufferedInputStream(httpURLConnection.getInputStream());bi ImageIO.read(bis);printWriter.close();ByteArrayOutputStream stream new ByteArrayOutputStream();try {// 设置图片格式ImageIO.write(bi, jpg, stream);} catch (IOException e) {e.printStackTrace();}byte[] bytes Base64.encodeBase64(stream.toByteArray());String base64 new String(bytes);return data:image/jpeg;base64, base64;} catch (Exception e) {e.printStackTrace();}return null;} 2.自定义logo 加入以下代码 //要替换的图片路径BufferedImage logoImage ImageIO.read(new URL(https://nk-mall.oss-cn-shenzhen.aliyuncs.com/WDMPV_MP/1698932836550.png));// logo图的宽高int width logoImage.getWidth();int height logoImage.getHeight();// 保存正方形的边长int size Math.min(width, height);// 判断那条边的边更长// 裁剪获取正中间的正方形边长为图片宽的值 后面.size方法必须调用 否则异常logoImage Thumbnails.of(logoImage).sourceRegion(Positions.CENTER, size, size).size(size, size).asBufferedImage();// 转成圆形logoImage convertCircular(logoImage);// 缩放放大微信二维码的底图 目的为了减少对用户上传的图片缩放过小图片失真bi Thumbnails.of(bi).size(bi.getHeight() * 2, bi.getHeight() * 2).asBufferedImage();// 使用Graphics2D合并图片Graphics2D g2 null;// 读取微信二维码图片g2 bi.createGraphics();// 合并并设置偏移量logo图片大小。具体需要自己按照实际的大小调整g2.drawImage(logoImage, 232 , 232, 395, 395, null);g2.dispose(); 完整代码
/*** 生成微信小程序二维码带参数,最终转成base64* param page 当前小程序相对页面 必须是已经发布的小程序存在的页面(否则报错)例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里)如果不填写这个字段默认跳主页面* param scene 最大32个可见字符只支持数字大小写英文以及部分特殊字符!#$()*,/:;?-._~其它字符请自行编码为合法字符(因不支持%中文无法使用 urlencode 处理请使用其他编码方式)* param accessToken 接口调用凭证*/public static String generateQrCode(String page, String scene,String accessToken) {BufferedImage bi null;try {URL url new URL(https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token accessToken);HttpURLConnection httpURLConnection (HttpURLConnection)url.openConnection();httpURLConnection.setRequestMethod(POST);httpURLConnection.setDoOutput(true);httpURLConnection.setDoInput(true);PrintWriter printWriter new PrintWriter(httpURLConnection.getOutputStream());JSONObject paramJson new JSONObject();paramJson.put(scene, scene);paramJson.put(page, page);paramJson.put(width, 430);paramJson.put(auto_color, false);JSONObject lineColor new JSONObject();lineColor.put(r, 0);lineColor.put(g, 0);lineColor.put(b, 0);paramJson.put(line_color, lineColor);printWriter.write(paramJson.toString());printWriter.flush();BufferedInputStream bis new BufferedInputStream(httpURLConnection.getInputStream());bi ImageIO.read(bis);printWriter.close();//要替换的图片路径BufferedImage logoImage ImageIO.read(new URL(https://nk-mall.oss-cn-shenzhen.aliyuncs.com/WDMPV_MP/1698932836550.png));// logo图的宽高int width logoImage.getWidth();int height logoImage.getHeight();// 保存正方形的边长int size Math.min(width, height);// 判断那条边的边更长// 裁剪获取正中间的正方形边长为图片宽的值 后面.size方法必须调用 否则异常logoImage Thumbnails.of(logoImage).sourceRegion(Positions.CENTER, size, size).size(size, size).asBufferedImage();// 转成圆形logoImage convertCircular(logoImage);// 缩放放大微信二维码的底图 目的为了减少对用户上传的图片缩放过小图片失真bi Thumbnails.of(bi).size(bi.getHeight() * 2, bi.getHeight() * 2).asBufferedImage();// 使用Graphics2D合并图片Graphics2D g2 null;// 读取微信二维码图片g2 bi.createGraphics();// 合并并设置偏移量logo图片大小。具体需要自己按照实际的大小调整g2.drawImage(logoImage, 232 , 232, 395, 395, null);g2.dispose();ByteArrayOutputStream stream new ByteArrayOutputStream();try {// 设置图片格式ImageIO.write(bi, jpg, stream);} catch (IOException e) {e.printStackTrace();}byte[] bytes Base64.encodeBase64(stream.toByteArray());String base64 new String(bytes);return data:image/jpeg;base64, base64;} catch (Exception e) {e.printStackTrace();}return null;}