小程序生成商品分享二维码海报解决方案和实现方式JAVA
使用技术: Graphics , 七牛云 , 微信sdk(github上非常出名的wxjava,地址https://github.com/Wechat-Group/WxJava/)
直接上干货代码,每一步都有详细注释, TODO 的地址修改为自己的信息,一个合格的程序员懂得灵活运用代码. 如果想实现画入文字并且更具 \n 自动换行,可根据代码自行优化(已经实现自动换行).
@Test
public void share() throws Exception {
//创建图片
BufferedImage img = new BufferedImage(750, 1334, BufferedImage.TYPE_INT_RGB);
//开启画图
Graphics g = img.getGraphics();
//背景 -- 读取互联网图片
BufferedImage back = ImageIO.read(new URL("填写海报的背景图片链接"));
g.drawImage(back.getScaledInstance(750, 1334, Image.SCALE_DEFAULT), 0, 0, null); // 绘制缩小后的图
//商品 banner图
//读取互联网图片
BufferedImage priductUrl = ImageIO.read(new URL("填写自己的banner图,线上链接")); //TODO
g.drawImage(priductUrl.getScaledInstance(690,516,Image.SCALE_DEFAULT),29,61,null);
//文案标题
g.setFont(new Font("微软雅黑", Font.BOLD, 34));
g.setColor(new Color(29,29,29));
//绘制文字
g.drawString("填写文案标题", 31, 638);//TODO
//文案
g.setFont(new Font("微软雅黑", Font.PLAIN, 30));
g.setColor(new Color(47,47,47));
int fontlen = getWatermarkLength("填写文内容", g);//TODO
//文字长度相对于图片宽度应该有多少行
int line = fontlen / (back.getWidth() - 90);
//高度
int y = back.getHeight() - (line + 1) * 30 - 500;
//文字叠加,自动换行叠加
int tempX = 32;
int tempY = y;
//单字符长度
int tempCharLen = 0;
//单行字符总长度临时计算
int tempLineLen = 0;
StringBuffer sb =new StringBuffer();
for(int i=0; i < "填写文内容".length(); i++) {//TODO
char tempChar = "填写文内容".charAt(i);//TODO
tempCharLen = getCharLen(tempChar, g);
tempLineLen += tempCharLen;
if(tempLineLen >= (back.getWidth()-90)) {
//长度已经满一行,进行文字叠加
g.drawString(sb.toString(), tempX, tempY + 50);
//清空内容,重新追加
sb.delete(0, sb.length());
//每行文字间距50
tempY += 50;
tempLineLen =0;
}
//追加字符
sb.append(tempChar);
}
//最后叠加余下的文字
g.drawString(sb.toString(), tempX, tempY + 50); //价格背景
//读取互联网图片
BufferedImage bground = ImageIO.read(new URL("填写自己的价格背景图,七牛图片链接"));//TODO
// 绘制缩小后的图
g.drawImage(bground.getScaledInstance(160, 40, Image.SCALE_DEFAULT), 30, 1053, null); //限时促销价
g.setFont(new Font("微软雅黑", Font.PLAIN, 24));
g.setColor(new Color(255,255,255));
g.drawString("限时促销价", 50, 1080); //价格
g.setFont(new Font("微软雅黑", Font.PLAIN, 50));
g.setColor(new Color(249,64,64));
g.drawString("¥" + "填写商品的价格", 29, 1162);//TODO //原价
g.setFont(new Font("微软雅黑", Font.PLAIN, 36));
g.setColor(new Color(171,171,171));
String price = "¥" + "填写商品的原价";//TODO
g.drawString(price, 260, 1160);
g.drawLine(250,1148,260+150,1148); //商品名称
g.setFont(new Font("微软雅黑", Font.PLAIN, 32));
g.setColor(new Color(29,29,29));
g.drawString("填写商品名称", 30, 1229);//TODO //生成二维码返回链接
String url = "";//TODO
//读取互联网图片
BufferedImage qrCode = ImageIO.read(new URL(url));
// 绘制缩小后的图
g.drawImage(qrCode.getScaledInstance(174, 174, Image.SCALE_DEFAULT), 536, 1057, null); //二维码字体
g.setFont(new Font("微软雅黑", Font.PLAIN, 25));
g.setColor(new Color(171,171,171));
//绘制文字
g.drawString("扫描或长按小程序码", 515, 1260); g.dispose();
//保存到本地 生成文件名字
String iconKey = UUID.randomUUID().toString() +".png"; //TODO
//先将画好的海报写到本地
String picUrl = "填写自己电脑的路径" + iconKey; // TODO
File file = new File(picUrl);
ImageIO.write(img, "jpg",file);
//再将file上传至七牛返回链接存入数据库
//end
// TODO
} /**
* 获取水印文字总长度
*@paramwaterMarkContent水印的文字
*@paramg
*@return水印文字总长度
*/
public int getWatermarkLength(String waterMarkContent, Graphics g) {
return g.getFontMetrics(g.getFont()).charsWidth(waterMarkContent.toCharArray(),0, waterMarkContent.length());
}
public int getCharLen(char c, Graphics g) {
return g.getFontMetrics(g.getFont()).charWidth(c);
}
小程序生成商品分享二维码海报解决方案和实现方式JAVA的更多相关文章
- 微信小程序生成带参二维码
需求:生成小程序中的海报,需要小程序二维码可以使用户保存到本地在朋友圈分享 生成二维码工具类代码如下: package com.aone.foottalk.action.wx.util; import ...
- Android生成二维码--保存和分享二维码图片
之前写过生成自定义二维码的两篇文章:<Android生成自定义二维码><Android生成二维码–拍照或从相册选取图片>,下面就介绍一下Android应用内如何保存以及分享二维 ...
- 微信小程序条码、二维码生成模块
代码地址如下:http://www.demodashi.com/demo/13994.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 微信小程序之生成二维码
最近项目中涉及到小程序的生成二维码,很是头疼,经过多次摸索,整理出了自己的一些思想方法,如有不足,欢迎指正. 首先完全按照小程序的结构依次填坑. pages--index.wxml <view ...
- 微信小程序,获取二维码
微信小程序,获取二维码 找到一篇很实用的博客,他已经写得很详细了,自己也懒得写,亲测有效 参考网址
- 根据短链生成二维码并上传七牛云(Java)
通过短链生成二维码并上传七牛云(Java) 前言 网上这种帖子其实也是很多,大部分搜出来的是CSDN的,然后点进去一看都几乎一样:所以这次给个自己实践的例子记录. 这次也是通过搜索得到的一部分能实现这 ...
- 微信小程序之生成图片分享 二维码分享 canvas绘制
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 添加画布 首先,在小程序里进行绘图操作需要用到<canvas>组件,步骤大致分为以 ...
- 转【微信小程序 四】二维码生成/扫描二维码
原文:https://blog.csdn.net/xbw12138/article/details/75213274 前端 二维码生成 二维码要求:每分钟刷新一次,模拟了个鸡肋,添加了个按分钟显示的时 ...
- 微信小程序 - 配置普通二维码跳小程序
普通二维码跳小程序规则: https://developers.weixin.qq.com/miniprogram/introduction/qrcode.html#%E5%8A%9F%E8%83%B ...
随机推荐
- c# 将checkedListBox选择的值保存再数组中并转换成以指定字符连接的字符串
经常忘记,所以记一下: string[] arr =new string[3]; int b = 0; foreach (string outstr in checkedListBox1.Checke ...
- odoo里面context用法
原文转自:https://www.cnblogs.com/zhaoweihang/p/9698852.html <field name="partner_id" string ...
- xmind8-update9 安装破解激活教程
xmind8是一款原型图设计流行的软件,相比于xmind2020功能更为丰富,比如画甘特图等.本教程来教大家如何对xmind8 update9进行安装激活,使用全部功能,无限期使用! 只看本文一篇即可 ...
- 🔥 LeetCode 热题 HOT 100(11-20)
20. 有效的括号 class Solution { public boolean isValid(String s) { Map<Character, Character> map = ...
- Bugku-misc 1-8题总结
1.签到题 略过 2.这是一张单纯的图片 拉入winhex,在最后面有一段Uniocde编码,解码得到flag. 3.隐写 题目是隐写,binwalk打开分析 得到两个Zlib(提供数据压缩用的函式库 ...
- RHCE_DAY06
iptables防火墙 ----匹配及停止 nerfilter/iptables:工作在主机或网络的边缘,对于进出本主机或网络的报文根据事先定义好的检查规则作匹配检测,对于能够被规则所匹配到的报文做出 ...
- C运算符(算数运算符)
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C 语言内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 1 //实列 2 3 ...
- 心酸!30岁深漂失业3个月,从巅峰跌落谷底,大龄Android开发必须要懂的事!
2021年3月,我的前同事,在我们群里说他准备回老家了,问我们有没有人可以暂时收养他的猫. --他说,这周末就要离开深圳了. 他失业了.3个多月没收入,还要交着房租,过年来之后找了快一个月的工作也没有 ...
- Kotlin高阶函数实战
前言 1. 高阶函数有多重要? 高阶函数,在 Kotlin 里有着举足轻重的地位.它是 Kotlin 函数式编程的基石,它是各种框架的关键元素,比如:协程,Jetpack Compose,Gradle ...
- Docker部署Jenkins 2.285版持续部署集成实践(1)
抓取Jenkins镜像 docker pull jenkins/jenkins 创建映射本地路径: 运行Jenkins实例 docker for windows: docker run -it -p ...