Java生成微信分享海报【基础设计】
前言
微信后台生成海报一般都是一个模板写死,然后就完事了,过了不久让修改个模板,就又要看半天,还要考虑是否重新复制一份改一改,越来越多的重复代码,全在一个图片类里,然后就越来越乱。这两天用设计模式处理了一下,让以后修改模板,新增模板更舒服一点。有第三方好用的轻量级的实现,还请留言。感激!!
效果图
快速上手
Maven pom文件引入【github直接clone源码 更方便定制修改】
<!-- https://mvnrepository.com/artifact/com.github.quaintclever/easyposter -->
<dependency>
<groupId>com.github.quaintclever</groupId>
<artifactId>easyposter</artifactId>
<version>1.2</version>
</dependency>
Gradle
// https://mvnrepository.com/artifact/com.github.quaintclever/easyposter
compile group: 'com.github.quaintclever', name: 'easyposter', version: '1.2'
海报定义类
/**
* @author quaint
* @date 30 March 2020
* @since 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
public class SamplePoster extends AbstractDefaultPoster {
/**
* 背景图
*/
@PosterBackground(width = 666,height = 365)
private BufferedImage backgroundImage;
/**
* 头像
*/
@PosterImageCss(position = {27,27},width = 36, height = 36, circle = true)
private BufferedImage head;
/**
* 昵称
*/
@PosterFontCss(position = {71,32}, color = {255,255,255})
private String nickName;
/**
* 广告语
*/
@PosterFontCss(position = {27,70},center = true, size = 22, color = {255,255,255}, canNewLine={1,221,7})
private String slogan;
/**
* 主图
*/
@PosterImageCss(position = {27,172},width = 168,height = 168)
private BufferedImage mainImage;
@Tolerate
public SamplePoster() {}
}
海报绘制
/**
* 绘制海报本地测试
* @author quaint
* @date 21 February 2020
* @since 1.0
*/
public class PosterTest {
public static void main(String[] args) throws Exception{
// 测试注解, 这里读取图片如果不成功,请查看target 或者 out 目录下是否加载了资源。 如需使用,请引入spring core依赖
BufferedImage background = ImageIO.read(new ClassPathResource("image/yayi.png").getInputStream());
BufferedImage head = ImageIO.read(new ClassPathResource("image/headimage.jpg").getInputStream());
SamplePoster poster = SamplePoster.builder()
.backgroundImage(background)
.head(head)
.nickName("Quaint")
.slogan("命运多舛,痴迷淡然。挥别了青春,数不尽的车站。甘于平凡,却不甘平凡地溃败。")
.mainImage(head)
.build();
PosterDefaultImpl<SamplePoster> impl = new PosterDefaultImpl<>();
BufferedImage test = impl.annotationDrawPoster(poster).draw(null);
ImageIO.write(test,"png",new FileOutputStream("annTest.png"));
}
}
注解绘制效果图
源码阅读
- 了解IO
- 了解awt
- 装饰者设计模式
- 责任链设计模式
- 策略模式
- 建造者模式
感觉还不错 的话记得投币哦~
Java生成微信分享海报【基础设计】的更多相关文章
- java实现微信分享
之前项目中涉及到了微信分享的功能,然后总结下供有需要的朋友参考下. 在做之前可以先看下<微信JS-SDK说明文档>,大致了解下.我自己的工程目录是 1.HttpService和HttpSe ...
- Java生成微信二维码及logo二维码
依赖jar包 二维码的实现有多种方法,比如 Google 的 zxing 和日本公司的 QrCode,本文以 QrCode 为例. QrCode.jar:https://pan.baidu.com/s ...
- java 生成微信的二维码 工具类
package com.app.wii.util; import java.io.File;import java.io.FileInputStream;import java.io.FileOutp ...
- 用JAVA生成老电影海报
先看图,再讲原理.生成效果对照: 机器全自己主动生成.是不是非常酷炫?:) 数字图像,由无数个像素组成,通常情况下,每一个像素包括有RGB三个值,算法原理事实上非常easy: 一,遍历全部像素,将RG ...
- 前端生成分享海报兼容H5和小程序
### 移动端分享海报生成 最近做项目需求是生成商品分享海报,并且保存到手机中要兼容H5和小程序<br> 与后端同学沟通后,海报在前端生成最省性能和有较好的交互体验,先看做好的效果
- 开源)嗨,Java,你可以生成金山词霸的二维码分享海报吗?
As long as you can still grab a breath, you fight.只要一息尚存,就不得不战. 有那么一段时间,我特别迷恋金山词霸的每日一句分享海报.因为不仅海报上的图 ...
- 重学 Java 设计模式:实战模版模式「模拟爬虫各类电商商品,生成营销推广海报场景」
作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 黎明前的坚守,的住吗? 有人举过这样一个例子,先给你张北大的录 ...
- 第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备
相信很多人或多或少听说了微信公众平台的火热.但是开发还是有一点门槛,鉴于挺多朋友问我怎么开发,问多了,自己平时也进行以下总结.所以下面给大家分享一下我的经验: 微信公众号是什么? 官网的介绍:再小的个 ...
- Vue生成分享海报(含二维码)
本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. 功能需求: 海报有1张背景 ...
随机推荐
- sender e
sender 产生事件的对象e 事件的参数
- (分块)Holes CodeForces - 13E
题意 n(n≤105)个洞排成一条直线,第ii个洞有力量值ai,当一个球掉进洞ii时就会被立刻弹到i+ai,直到超出n.进行m(m≤105)次操作: ·修改第i个洞的力量值ai. ·在洞xx上放一个球 ...
- 【java面试】算法篇
1.冒泡排序 /** * 冒泡排序 * 比较相邻的元素.如果第一个比第二个大,就交换他们两个. * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. ...
- 用tensorflow的Eager执行模式
一.即时执行模式 import tensorflow as tfimport tensorflow.contrib.eager as tfetfe.enable_eager_execution() a ...
- Liunx(centos8)下的yum的基本用法和实例
yum 命令 Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的 ...
- CSS-06-CSS颜色表示方法
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- HttpClient介绍和使用
HttpClient介绍和使用 今天有一个需求:后台访问一个接口,获取返回的数据.于是找到了HttpClient 1.介绍 SpringCloud中服务和服务之间的调用全部是使用HttpClient, ...
- springBoot的事件机制---GenericApplicationListener用法
springBoot的事件机制---GenericApplicationListener用法 什么是ApplicationContext? 它是Spring的核心,Context我们通常解释为上下文环 ...
- go--->beego框架安装
beego 安装 1.新建gopath 工程目录 2.在新建的工程目录中执行go get github.com/astaxie/beego 命令 3.再执行go get github.com/beeg ...
- Intellij IDEA使用(一)项目模板类型
概述 IDEA默认打开后,会出现欢迎页面,可以选择打开Project的方式. 对于新建的Project,一般会选择[Create New Project],对于界面中,众多的Project类型,有时候 ...