Java生成二维码分享海报

本文介绍了如何使用Java编程生成个人品牌二维码分享海报,包括采集网络图片、加载海报背景、绘制二维码、构建图形化界面及打包成jar包的过程。通过Graphics2D绘制图像并打印中英文,实现美观的海报设计。
摘要由CSDN通过智能技术生成

As long as you can still grab a breath, you fight. 只要一息尚存,就不得不战。

有那么一段时间,我特别迷恋金山词霸的每日一句分享海报。因为不仅海报上的图片美,文字也特别美,美得让我感觉生活都有了诗意。就像文章开头的那句中英文对照,中文和英文都妙极了。

最近,又有很多人迷恋上了流利说的小程序分享海报(朋友圈比比皆是)。但不管是金山词霸还是流利说,分享的海报都不是自己的二维码,这对于个人品牌的缔造者来说,实在是一件出力不讨好的事。

当然了,这种事难不倒作为程序员的我。

01、大致思路

  • 采集网络图片

  • 加载海报背景和个人品牌二维码

  • 利用 Graphics2D 将网络图片绘制成海报封面

  • 利用 Graphics2D 在海报上打印中英文对照语

  • 利用 Graphics2D 在海报上绘制个人专属二维码

  • 使用 Swing 构建图形化界面

  • 将项目打成 jar 包发行

  • 运行 jar 包,填写必要信息后生成海报

02、采集网络图片

第一步,获取网络图片的路径。金山词霸每日一句的图片路径地址形式如下所示。可以根据当前日期获取最新的图片路径。

// 金山词霸的图片路径
String formatDate = DateFormatUtils.format(new Date(), "yyyyMMdd");
String picURL = "http://cdn.iciba.com/news/word/big_" + formatDate + "b.jpg";

第二步,有了图片路径后,可以根据此路径创建 HTTP get 请求。

// 根据路径发起 HTTP get 请求
HttpGet httpget = new HttpGet(picURL);
// 使用 addHeader 方法添加请求头部
httpget.addHeader("Content-Type", "text/html;charset=UTF-8");

// 配置请求的超时设置
RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(500).setConnectTimeout(500)
		.setSocketTimeout(500).build();
httpget.setConfig(requestConfig);

第三步,创建 CloseableHttpClient 对象来执行 HTTP get 请求,并获取响应信息 CloseableHttpResponseCloseableHttpClient 是一个抽象类,它是 HttpClient 的基本实现,也实现了 java.io.Closeable 接口。

CloseableHttpClient httpclient = HttpClientBuilder.create().build();
CloseableHttpResponse response = httpclient.execute(httpget);

第四步,从 CloseableHttpResponse 中获取图片的输入流。

HttpEntity entity = response.getEntity();
InputStream picStream = entity.getContent();

第五步,从图片输入流中读取信息,并输出到本地文件中。

File pic = Files.createTempFile(Paths.get("D:\\test"), "pic_", ".jpg");
FileOutputStream fos = new FileOutputStream(pic);
int read = 0;

// 1024Byte(字节)=1KB 1024KB=1MB
byte[] bytes = new byte[1024 * 100];
while ((read = inputStream.read(bytes)) != -1) {
	fos.write(bytes, 0, read);
}

fos.flush();
fos.close();

在指定的临时目录下可以查看采集到的图片,如下所示。

03、加载海报背景和个人品牌二维码

海报背景的大小为 678 * 1013 像素,个人品牌二维码的大小为 128 * 128 像素。两张图片都是事先准备好的,放在 src 目录下。整个项目的目录结构图如下所示。

接下来,我们把这两张图片分别读取到临时文件当中,供后续动作使用。

第一步,创建 ClassLoader 对象,从 classpath 的根路径下查找资源。

ClassLoader classLoader = ReadBgAndQrcode.class.getClassLoader();

第二步,通过 classLoader.getResourceAsStream() 读取海报背景和个人品牌二维码,复制到临时文件中。

File bgFile = Files.createTempFile(DIRECTORY, "bg_", ".jpg&#
  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值