手把手教你如何生成自己的二维码
##什么是二维码
二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。
####功能
●信息获取(名片、地图、WIFI密码、资料)
●网站跳转(跳转到微博、手机网站、网站)
●广告推送(用户扫码,直接浏览商家推送的视频、音频广告)
●手机电商(用户扫码、手机直接购物下单)
●防伪溯源(用户扫码、即可查看生产地;同时后台可以获取最终消费地)
●优惠促销(用户扫码,下载电子优惠券,抽奖)
●会员管理(用户手机上获取电子会员信息、VIP服务)
●手机支付(扫描商品二维码,通过银行或第三方支付提供的手机端通道完成支付)
####应用前景
尽管二维码应用渐趋广泛,但与日韩等国相比,中国的二维码发展还远远不够。制约因素除了运营商的支持度外,还有技术、终端适配、盈利模式等方面。炒得很火热的是二维码与O2O(Online To Offline)模式的结合,即利用二维码的读取将线上的用户引流给线下的商家。腾讯很看好这个模式,马化腾称"二维码是线上线下的一个关键入口"。尽管有些人不看好二维码的应用,但无可否认,只要培养了足够多的用户群,再结合良好的商业模式,二维码将成为桥接现实与虚拟最得力的工具之一。
####优点
1.高密度编码,信息容量大。
2.编码范围广。
3.容错能力强,具有纠错功能。
4.译码可靠性高。
5.可引入加密措施。
6.成本低,易制作,持久耐用。
##如何生成自己的二维码?
####1 采用第三方生成工具
草料网 https://cli.im/
在线生成 http://www.liantu.com/
微微二维码 http://www.wwei.cn/
####2 可以通过代码来生成
废话不多说,直接上代码。
使用zxing生成二维码并前台显示,图片保存后放到指定路径即可
maven依赖
<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.1</version>
</dependency>
<dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.3.1</version>
</dependency>
生成二维码代码
public class QRCodeUtil {private static final int BLACK = 0xff000000;private static final int WHITE = 0xFFFFFFFF;private static QRCodeUtil qrCodeUtil = null;public QRCodeUtil() {}public static QRCodeUtil getInstance() {if (qrCodeUtil == null) {qrCodeUtil = new QRCodeUtil();}return qrCodeUtil;}/*** 根据参数生成二维码图片。* ** @param imgCharactCode 字符编码, 默认为:UTF-8.* @param imgWidth 图片宽度, 默认为: 300px* @param imgHeight 图片高度, 默认为: 300px* @param strImgFileFoler 图片存储目录* @param imgFileName 图片名称(如:myTestQrImg.png)* @param qrContent 二维码内容* @return 二维码图片的文件对象*/public File genQrCodeImg(String imgCharactCode, int imgWidth, int imgHeight, String strImgFileFoler, String imgFileName, String qrContent) {File imgFullFile = null;if (strImgFileFoler == null || "".equals(strImgFileFoler) || imgFileName == null || "".equals(imgFileName) || qrContent == null || "".equals(qrContent)) {return imgFullFile;}BitMatrix bitMatrix = null;try {// 定义二维码参数的哈希映射表HashMap<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();// 编码方式,支持中文imgCharactCode = (imgCharactCode == null || "".equals(imgCharactCode) ? "UTF-8" : imgCharactCode);hints.put(EncodeHintType.CHARACTER_SET, imgCharactCode);// 容错等级hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);// 二维码边距hints.put(EncodeHintType.MARGIN, 1);// 生成点阵imgWidth = (imgWidth <= 0 ? 300 : imgWidth); // 默认为300pximgHeight = (imgHeight <= 0 ? 300 : imgHeight); // 默认为300pxbitMatrix = new MultiFormatWriter().encode(qrContent, BarcodeFormat.QR_CODE, imgWidth, imgHeight, hints);// 创建目录File fileImgFoler = new File(strImgFileFoler);if (!fileImgFoler.exists()) {fileImgFoler.mkdir();}// 图片的文件对象String strImgFullName = fileImgFoler.getPath() + "/" + imgFileName;imgFullFile = new File(strImgFullName);// 图片扩展名(即:图片格式)Path filePath = imgFullFile.toPath();String imgFormat = imgFileName.substring(imgFileName.lastIndexOf(".") + 1);// 输出文件MatrixToImageWriter.writeToPath(bitMatrix, imgFormat, filePath);} catch (WriterException | IOException e) {e.printStackTrace();imgFullFile = null;}return imgFullFile;}/*** 生成QRCode二维码<br>* 在编码时需要将com.google.zxing.qrcode.encoder.Encoder.java中的<br>* static final String DEFAULT_BYTE_MODE_ENCODING = "ISO8859-1";<br>* 修改为UTF-8,否则中文编译后解析不了<br>*/public void encode(String contents, File file, BarcodeFormat format, int width, int height, Map<EncodeHintType, ?> hints) {try {BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, format, width, height);writeToFile(bitMatrix, "png", file);} catch (Exception e) {e.printStackTrace();}}/*** 生成二维码图片<br>** @param matrix* @param format 图片格式* @param file 生成二维码图片位置* @throws IOException*/public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException {BufferedImage image = toBufferedImage(matrix);ImageIO.write(image, format, file);}/*** 生成二维码内容<br>* @param matrix* @return*/public static BufferedImage toBufferedImage(BitMatrix matrix) {int width = matrix.getWidth();int height = matrix.getHeight();BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);for (int x = 0; x < width; x++) {for (int y = 0; y < height; y++) {image.setRGB(x, y, matrix.get(x, y) == true ? BLACK : WHITE);}}return image;}/*** 解析QRCode二维码*/@SuppressWarnings("unchecked")public void decode(File file) {try {BufferedImage image;try {image = ImageIO.read(file);if (image == null) {System.out.println("Could not decode image");}LuminanceSource source = new BufferedImageLuminanceSource(image);BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));Result result;@SuppressWarnings("rawtypes")Hashtable hints = new Hashtable();//解码设置编码方式为:utf-8hints.put(DecodeHintType.CHARACTER_SET, "utf-8");result = new MultiFormatReader().decode(bitmap, hints);String resultStr = result.getText();System.out.println("解析后内容:" + resultStr);} catch (IOException ioe) {System.out.println(ioe.toString());} catch (ReaderException re) {System.out.println(re.toString());}} catch (Exception ex) {System.out.println(ex.toString());}}/*** 测试*/public static void main(String[] args) {String src = "C:\\Users\\tizzy\\Desktop\\SaomaKaipiao\\WeixinKaiPiao_webPage\\src\\main\\resources\\static\\img";QRCodeUtil test = new QRCodeUtil();File file = new File(src+"\\test.png");test.encode("https://www.baidu.com", file, BarcodeFormat.QR_CODE, 200, 200, null);test.decode(file);}}
写文不易,小手动一动,据说长得帅的小哥哥小姐姐都关注我了。
手把手教你如何生成自己的二维码相关推荐
- 手把手教你,Java如何实现二维码?【附源码】
作者:红颜祸水nvn 来源:http://suo.im/5R6ewH 步骤1 第一步首先创建一个普通的 Maven 项目,然后要实现二维码功能,我们肯定要使用别人提供好的 Jar 包,这里我用的是 g ...
- 超详细AI二维码制作教程:手把手教你如何用Stable Diffusion 生成一个创意二维码?
AI已来,未来已来! 来势汹汹的人工智能,如同创世纪的洪水,正在全世界的范围内引发一场史无前例的科技革命.AI正在改变世界!而我们正是这场巨变的见证者. 今天我们要介绍的内容就是:如何利用AI工具St ...
- 实例:用C#.NET手把手教你做微信公众号开发(11)--生成带参数二维码
上一篇讲了普通关注的各种情景,接下来准备详细讲解带参数的二维码的应用实例.在下一篇详解之前,这里先介绍一下如何下载二维码.生成二维码表,为后续的应用做好准备. 为了满足用户渠道推广分析和用户帐号绑定等 ...
- python生成动态二维码实例_python生成动态个性二维码(示例代码)
1 安装工具 2 生成普通二维码 3 带图片的二维码 4 动态 GIF 二维码 5 在Python程序中使用 一.安装 首先在python环境下运行, 打开cmd进入python27 进入script ...
- 微信公众平台开发(83) 生成带参数二维码
本文介绍在微信公众平台上如何使用高级接口开发生成带参数二维码的功能. 一.场景二维码 为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二维码, ...
- java生成和识别二维码
全栈工程师开发手册 (作者:栾鹏) java教程全解 本文使用两种方式生成和识别二维码. 方法1:使用日本公司的qrcode 需要引入的包 qrcode_swetake.jar qrcode.jar ...
- 【微信小程序】接口生成自定义首页二维码
1.背景 在原有小程序上开发了一个新的功能,需要整合首页.但是为了不影响原有业务,且能测试新功能.所以需要新生成一个二维码,用户扫描该二维码可以跳转到新功能的页面. 2.方法 2.1生成二维码的接口: ...
- 生成和扫描二维码(ZXing库)
生成和扫描二维码(ZXing库) 一.ZXing概述 ZXing是谷歌自己推出的一个开源源码的二维码框架,可以实现使用手机的摄像头完成条形码的扫描和解码. 二.整合ZXing框架 将预先获取的core ...
- vue + 生成 下载 成 二维码
二维码 <div class='box' v-for="(item,index) in this.num" :key="item.key "> ...
- Java分别使用zxing及qrcode-plugin生成各种样式二维码
二维码 二维条形码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息. 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动 ...
最新文章
- [WWDC] What's New in Swift 4 ?
- 健身前到底该不该吃东西
- nginx 跨服务器显示图片,centos6.6下nginx配置远程服务器上图片访问
- micropython编程软件下载_MicroPython可视化拼插编辑器:让硬件编程更智能!
- SAP HANA如何在存储过程中使用自定义的table type
- VC编写和调用DLL的简单例子
- 贝叶斯公式的直观理解(先验概率/后验概率)(未完)
- cad加载tiff影像插件_ENVI影像规则裁剪
- Linux c学习--进程基础学习
- 200套web前端期末大作业 HTML+CSS+JavaScript网页设计实例 企业网站制作 [建议收藏]
- 马尔科夫 贝叶斯 傅里叶 高斯
- Ubuntu安装完后更新显卡驱动
- 解决windows防火墙拦截FTP连接
- 软件开发工具【七】 之 Eclipse入门
- bash shell脚本实例合集
- 朝雨的方向,梦回故里
- Java一维数组学生成绩找最高分,输出成绩等级题目练习
- 5G射频室内测试的关键技术
- 14_python笔记-正则表达式
- EventBus基础