平时出图都是前端画图的,本次画图是对响应时间有要求,所有给后端提的需求。这里就给出一个demo 还有列出其中遇到的几个小问题
1 首先列出结果图
2 遇到的问题
1 这是两张图片覆盖的。
coverImage 方法
2 覆盖图是圆角矩形,但是四个角的底色要和底图保持一致
需要先fillRect 填充相应的底色。
3 覆盖图的文字显示问题, 因为是介绍,不确定字体的多少 自动换行 多行文字 自动计算高度 我这个是标题最多2行 介绍最多3行(在方法里面都是参数)。
drawString 该方法从网上找的 自己改造了下
4 font 字体的问题 和 Color颜色的问题
font字体 从C:\Windows\Fonts 中找对应的字体就行 Font font3 = new Font("苹方-简", Font.BOLD, 28); 但是记得如果是奇葩字体 比如我这个要求苹果的字体 一定要把字体上传到linux服务器 否咋 测试或生成 文字就会变成 “口口”
Color 颜色 java api 不能识别 #CC00FF 只能识别 Color.getHSBColor(153,153,153)
5 推荐一个好使的颜色取色器
链接:https://pan.baidu.com/s/1gxLTOIysfYQLlSWdMFmYpQ
提取码:se9s
3 main 代码
public static void main(String[] args) throws Exception {
int picWid=660;
int picHeight1=269;
int picHeight2=531;
BufferedImage BufImage = new BufferedImage(picWid, picHeight1+picHeight2, BufferedImage.TYPE_INT_RGB);// RGB形式
Graphics2D g = BufImage.createGraphics();
g.drawRect(0,0,picWid,picHeight1);//画线框
g.setColor(Color.red);
g.fillRect(0,0,picWid,picHeight1);//是用预定的颜色填充一个矩形
g.drawRect(0,picHeight1,picWid,picHeight2);//画线框
g.setColor(Color.white);
g.fillRect(0,picHeight1,picWid,picHeight2);//是用预定的颜色填充一个矩形
// 设置圆形头像
BufferedImage headImage = ImageIO.read(new URL("https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKu4BoQkiauW80hPgpeLZSVkHXVDVY1iaQkicNj5UjY5w1DDqZqk6GnfedKPthqx