CSDN账户申请好久了一直在论坛上面浏览别人的的东西,自己也没有写过什么正经东西,好多自己看到和用到的东西也渐渐忘记了,趁没忘干净之前自己总结下,方便以后查阅,闲话不多说了上干货。

需求来源于公司目前做的一个营销活动,需要生成一张营销海报,海报上带有用户二维码、头像、昵称这些简答的资料。我只用java生成图片,大概思路是以下几个步骤。

1、获取用户昵称和头像。

2、生成二维码。

3、设置背景图片并将用户信息放到背景图片上面。

1、获取用户昵称和头像。

不管是微信用户信息和二维码获取和生成所需要的数据都是需要调用微信接口的,如有对微信开发不了解的小伙伴自己看一下开发文档:微信公众平台 - 腾讯

微信获取用户信息需要先从微信上获取code,根据code查询openid,拿到openid这个唯一值。之后再查询用户信息。

2、生成二维码。

二维码生成的链接需要长链接

二维码生成的链接需要长链接

二维码生成的链接需要长链接

重要的事情说3遍如果不用长连接生成的二维码分享会出现问题。

网上也有很多获取 用户信息行和生成二维码示例写的也很详细我就不班门弄斧了:微信公众平台开发(76) 获取用户基本信息

3、设置背景图片并将用户信息放到背景图片上面。

剩下的就是用java将背景图片和用户信息放到一起(头像需要切成圆图),直接上干货。

//获取用户信息具体方法我就不写了,上文链接写的比我详细String nickname = "微信用户名称";String imageurl = "微信头像";//设置背景图片Image im = ImageIO.read(new java.net.URL("背景图片路径"));BufferedImage image = new BufferedImage(750,730+600, BufferedImage.TYPE_INT_RGB);//背景图片大小Graphics g = image.getGraphics();g.drawImage(im, 0, 0, null);Qrcode qrcode = new Qrcode();qrcode.setQrcodeErrorCorrect('M');qrcode.setQrcodeEncodeMode('B');qrcode.setQrcodeVersion(7);//生成二维码String qrData = "二维码长连接路径";int width = 300;int height = 300;BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics2D gs = bufferedImage.createGraphics();gs.setBackground(Color.WHITE);gs.setColor(Color.BLACK);gs.clearRect(0, 0, width, height);int pixoff = 15;byte[] d = qrData.getBytes("utf-8");if (d.length > 0 && d.length < 120) {boolean[][] s = qrcode.calQrcode(d);System.out.println(s.length);for (int i = 0; i < s.length; i++) {for (int j = 0; j < s.length; j++) {if (s[j][i]) {gs.fillRect(j * 6 + pixoff, i * 6 + pixoff, 6, 6);}}}}gs.dispose();bufferedImage.flush();g.drawImage(bufferedImage,280,720,200,200,null);//设置二维码位置Image weixinimage = ImageIO.read(new java.net.URL(imageurl));//设置头像 makeRoundedCorner()方法是将头像   切成圆形g.drawImage(makeRoundedCorner((BufferedImage)weixinimage,720),290,1020,180,180,null);//设置头像位置//设置文字Font f = new Font("宋体",Font.PLAIN,35);  g.setColor(Color.white);  g.setFont(f); //设置文字居中FontMetrics fm = g.getFontMetrics();int nameWidth = fm.stringWidth(nickname);g.drawString(nickname, (750-nameWidth)/2, 1250);//设置字体位置ImageIO.write(image, "png", response.getOutputStream());

生成原型图片代码,参考文章:java 切圆图代码(方图切圆图)背景为透明

public static BufferedImage makeRoundedCorner(BufferedImage image, int cornerRadius) {int w = image.getWidth();int h = image.getHeight();BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);Graphics2D g2 = output.createGraphics();g2.setComposite(AlphaComposite.Src);g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);g2.setColor(Color.WHITE);g2.fill(new RoundRectangle2D.Float(0, 0, w, h, cornerRadius, cornerRadius));g2.setComposite(AlphaComposite.SrcAtop);g2.drawImage(image, 0, 0, null);g2.dispose();return output;}

java 获取微信头像和昵称 生成图片相关推荐

  1. H5中获取微信头像、昵称

    H5中获取微信用户资料的方式有两种,第一种是默认登录方式,即不需要弹出授权框,只会有一个"正在登录"的弹窗,这种方式获取到的数据仅限于该用户已经关注了对应公众号之后,如果是未关注公 ...

  2. uniapp获取微信头像和昵称

    <view class="userInformation"><!-- 用户自定义头像 --><view class="userPortrai ...

  3. 小程序template模板 为知你客服传入微信头像和昵称

    小程序template模板 为 知你客服 传入微信头像和昵称 自从利用了知你客服以来,我们自己的小程序已经完全完成了服务内环化,即所有操作已经可以完全在微信内部完成,不必在使用qq联系客户,但在未配置 ...

  4. php取微信名字和头像,微信小程序如何获取用户头像和昵称

    本文介绍了微信小程序如何获取用户头像和昵称,分享给大家,具体如下: 代码user.wxml: {{userInfo.nickName}} user.js //sort.js //獲取應用實例 var ...

  5. 微信小程序获取个人头像和昵称,和地图选点功能

    微信小程序获取个人头像和昵称,有技巧 1.可以直接获取 2.通过用户点击获取 过程中,有什么问题,可以加我微信号yizheng369探讨 先分析 这里面隐含了很多默认的规则,大家要注意: 1.可以直接 ...

  6. 微信小程序直接获取用户头像、昵称等(无需按钮授权)

    直接使用微信提供的组件 在页面使用获取用户头像.昵称 头像是直接返回图片需要对样式进行修改,其它数据也是直接展示 头像圆角需要加这个,否则实现不了

  7. 微信小程序—获取用户头像、昵称

    博客概要 针对使用微信小程序时获取用户头像.昵称的三种方法,做一个简单分享~ 文章目录 博客概要 1.wx.getUserInfo接口 2.button触发 3.open-data标签 总结 1.wx ...

  8. 微信小程序获取用户信息(getUserProfile接口回收后)——通过头像昵称填写获取用户头像和昵称

    背景:最近在用uniapp写微信小程序授权登录的时候,发现项目在微信开发者工具中调试是正常的,但是在真机运行时,返回的用户数据中昵称变成了微信用户,头像变成了默认的灰底头像.接着去百度了一下发现出现这 ...

  9. 微信小程序授权登录获取用户头像和昵称时得到微信用户,记录getUserInfo转变为getUserProfile的使用修改

    首先,在微信官方更新授权操作之前,我们一直使用getUserInfo来获取微信用户的头像和昵称以及openid,这个可以参考我的上一篇博客(使用getUserInfo获取用户头像),但是微信官方弃用g ...

最新文章

  1. 003_Servlet生命周期
  2. 谷歌扇区图层制作工具_很实用!轻松实现Mapinfo和GoogleEarth图层的数据转换
  3. 谈一谈Java编程开发中虚拟机的内存区域划分?猿们怎么看?
  4. java重载能否发生多次,java - 在Java中重载和多次调度 - SO中文参考 - www.soinside.com...
  5. 使用Thrift让Python为Java提供服务
  6. JAVA-SWING:生成透明JTable的改进2
  7. 解决 Illegal DefaultValue null for parameter type integer 异常
  8. .NET利用委托实现动态查询
  9. 模糊数学(一):模糊集及其表示
  10. 国际服务贸易重点整理
  11. 计算机日志存储在哪里,Win7系统日志存放位置的更改
  12. 解读MT7620A上的DTS文件
  13. 【WPF】用100行C#代码实现扫雷
  14. uni-app -- 小程序分享遇到的问题
  15. IJCAI 2019 | 通过交互提升机器翻译质量
  16. 冒泡排序的实现(Java)
  17. 【JavaScript】关于手机中的触摸手势操作实现过程详解
  18. 学霸创业团队的崛起:以大数据重塑K12在线教育
  19. A091_hrm07_用户中心_注册
  20. static,this,private关键字

热门文章

  1. Python程序运行结束后发出提示音
  2. 【HTTP-FLV播放】CicadaPlayer拉流:ffmpeg计算pkt duration
  3. 夜莺:2019年运营微信个人号的3个营销价值
  4. ✠OpenGL-8-阴影
  5. 自由编写一个创意进度展示条
  6. ajax请求时拒绝访问,ajax跨域请求js拒绝访问的解决方法
  7. 特斯拉正式推出全自动驾驶Beta版,马斯克表示 “谨慎行事”-1
  8. safari保存视频_如何使用Safari的“阅读列表”保存文章供以后使用
  9. python中and怎么计算_Python中 and,or 的计算规则
  10. 神经学家探寻:机器如何拥有意识!