import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix; import javax.imageio.ImageIO;
import javax.swing.filechooser.FileSystemView;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID; /**
* @Description:短连接生成二维码的工具类(需要导入core-3.*.*.jar包)
* @author : LMH
* @date : 2020/8/29 9:24
*/
public class QrcodeUtil {
/**
* 测试用例生成图片到本地桌面
* @param args
*/
public static void main(String[] args) {
String url = "http://www.baidu.com";
String path = FileSystemView.getFileSystemView().getHomeDirectory() + File.separator + "testQrcode";
System.out.println(path);
String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ UUID.randomUUID() + ".jpg";
createQrCode(url, path, fileName);
} /**
* 生成二维码的方法,其中主要有三个参数
* @param url 短连接地址
* @param path 图片存放地址
* @param fileName 文件名称
* @return
*/
public static String createQrCode(String url, String path, String fileName) {
try {
Map<EncodeHintType, String> hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, 400, 400, hints);
File file = new File(path, fileName);
if (file.exists() || ((file.getParentFile().exists() || file.getParentFile().mkdirs()) && file.createNewFile())) {
writeToFile(bitMatrix, "jpg", file);
System.out.println("测试完成:" + file);
} } catch (Exception e) {
e.printStackTrace();
}
return null;
}
static void writeToFile(BitMatrix matrix, String format, File file) throws IOException {
BufferedImage image = toBufferedImage(matrix);
if (!ImageIO.write(image, format, file)) {
throw new IOException("Could not write an image of format " + format + " to " + file);
}
} static void writeToStream(BitMatrix matrix, String format, OutputStream stream) throws IOException {
BufferedImage image = toBufferedImage(matrix);
if (!ImageIO.write(image, format, stream)) {
throw new IOException("Could not write an image of format " + format);
}
} private static final int BLACK = 0xFF000000;
private static final int WHITE = 0xFFFFFFFF; private static BufferedImage toBufferedImage(BitMatrix matrix) {
int width = matrix.getWidth();
int height = matrix.getHeight();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
}
}
return image;
} }

直接ctrl+c/v到ide中,调用 createQrCode()方法

java短链接生成二维码的更多相关文章

  1. java如何台生成二维码详解

    现在呢说明页面上展示二维码的两种方式: 1.使用img标签的src来请求生成二维码,后台会直接返回: 2.此处跟上方意思相似,获取到url给img标签设置src属性: 特别注意:如果url有amp;, ...

  2. 分享:Java 开发精美艺术二维码

    博客地址:https://ainyi.com/58 Java 开发精美艺术二维码 看到网络上各种各样的二维码层出不穷,好像很炫酷的样子,一时兴起,我也要制作这种炫酷二维码效果 例如: 根据以往例子 根 ...

  3. qrcode.js插件将你的内容转换成二维码格式

    ---qrcode.js插件将你的内容转换成二维码格式--- 我之前一直想知道二维码是怎么生成,所以就了解了一下, 最后还是不知道它的原理, 但是,我知道怎么生成. 现在就让我带你制作一个你喜爱的二维 ...

  4. URL转换成二维码

    转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6685804.html 二维码已经成为我们日常生活中的一个不可获取的产物,火车票上,景区门票,超市付款等等都 ...

  5. Java根据链接生成二维码

    Java根据链接生成二维码 相关 jar 包: core-3.1.0.jar 源码及 jar 包下载:http://files.cnblogs.com/files/liaolongjun/qrcode ...

  6. java学习-zxing生成二维码矩阵的简单例子

    这个例子需要使用google的开源项目zxing的核心jar包 core-3.2.0.jar 可以百度搜索下载jar文件,也可使用maven添加依赖 <dependency> <gr ...

  7. Java后台直接生成二维码介绍

    Java后台直接生成二维码 1.其实jquery也可以直接生成二维码的,但我测试的时候,二维码生成后太模糊,难以识别.所以在这里介绍在后来生成二维码的方式. 2.不善于文字描述,直接上代码了. imp ...

  8. chrome插件开发-----------将网址转化成二维码website2QRcode

    微信自带的浏览器无法输入链接,仅仅能通过扫描二维码实现.可是有时候看到一个有趣的站点,想分享,还得先去将链接转化成二维码的站点.先转成二维码.再扫描.有点麻烦.所以写了一个插件.直接生成二维码. 须要 ...

  9. 利用 Python django 框架 输入汉字,数字,字符,等。。转成二维码!

    利用 Python django 框架 输入汉字,数字,字符,等..转成二维码! 模块必备:Python环境 + pillow  + qrcode 模块 核心代码import qrcode qr = ...

  10. python将url转变成二维码图片

    将url数据转变成二维码数据,再将二维码图片转成base64格式返回 import qrcode import io def url_image(self,url): img = qrcode.mak ...

随机推荐

  1. MySQL 索引的创建、删除

    MySQL中索引的创建有三种方法,索引的删除有两种方法. 一.创建索引 (1)使用create index # 1.创建普通索引 create index 索引名 on 表名 (列名[(限制索引长度) ...

  2. printf()和scanf()的*修飾符

    如果你不想預先設置字段的寬度,想通過程序來進行設定,則可以可以使用"*"來進行修飾字段的寬度,前提是在程序中要包含"*"和參數對應的值(比如%*d,那麽參數應該 ...

  3. Python解释器下载与安装

    Python解释器下载与安装 一.Python解释器 1.Python的发展方向 web方向,自动化运维,自动化测试,自动化办公,网络爬虫,金融量化,人工智能,机器学习,数据分析 2.Python解释 ...

  4. 行为型模式 - 备忘录模式Memento

    学习而来,代码是自己敲的.也有些自己的理解在里边,有问题希望大家指出. 模式的定义与特点 在备忘录模式(Memento Pattern)下,为的是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该 ...

  5. 如何通过Java代码向Word文档添加文档属性

    Word文档属性包括常规.摘要.统计.内容.自定义.其中摘要包括标题.主题.作者.经理.单位.类别.关键词.备注等项目.属性相当于文档的名片,可以添加你想要的注释.说明等.还可以标注版权. 今天就为大 ...

  6. axios设置全局headers

    需求:每次请求的时候都设置token为headers非常不方便 axios提供配置全局headers 这里我主要使用的是加 一个token验证 Global axios defaults axios. ...

  7. elasticsearch-head-master安装

    1 简介 elasticsearch-head是一款专门针对于elasticsearch的客户端工具,elasticsearch-head是一个基于node.js的前端工程 2 依赖 需要安装node ...

  8. Tengine01

    1 简介 Tengine是nginx的一个版本 Tengine文档:http://tengine.taobao.org/ nginx官网: http://nginx.org Nginx (" ...

  9. 懂九转大肠的微软New Bing 内测申请教程

    最近微软的New Bing开放内测了,网上已经有拿到内测资格的大佬们对比了ChatGPT和New Bing.对比结果是New Bing比ChatGPT更强大.来看看具体对比例子吧 1.时效性更强 Ch ...

  10. 心酸部署dapr经历,最后一步莫名的遗憾

    dapr大概的了解,个人理解他就是一个分布式服务的管理,把微服务常用的组件(缓存,消息中间件.分布式锁.安全id4等)和监控以及服务注册.发现等等一系列功能以一个很抽象的方式管理起来. 可能我们部署微 ...