二维码通讯录的实现
来源:互联网 发布:西北工业大学网络教育 编辑:程序博客网 时间:2024/06/05 15:56
二维码通讯录的实现
功能介绍:根据用户的填入的相关信息生成二维码,手机微信扫描二维码直接可以添加该用户到手机联系人,主要涉及到二维码的生成和手机联系人vCard的设计,效果图如下:
微信扫描该二维码之后直接点击保存即可添加到手机通讯录中。
1,生成二维码的实现
二维码的实现借助了Qrcode,Qrcode是日本开发出来的,是由Denso公司于1994年9月份研发的一种矩阵二维码符号,它具有一维条码及其他二维条码所具有的信息容量大、可靠性高、可表示汉字及图像等多种文字信息、保密防伪性强等优点。
创建二维码工具类实现:
package com.qixiaoqi.utils;import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import javax.imageio.ImageIO;import com.swetake.util.Qrcode;/** * * @ClassName GenerateQrcodeUtils * @Description 生成二维码的工具类 * @author QiXiaoQi * @date 2017-12-4下午03:22:15 * @version V1.0 */public class GenerateQrcodeUtils { /** * * @Title GenerateQrCodeImg * @Description 生成二维码的方法实现 * @param content 需要生成二维码的内容 * @param imgPath 保存生成的二维码的路径 * @return void * <br> * <a href="https://www.baidu.com/" style="font-size:20px;color:red;">百度一下,你就知道了</a> */ public static void GenerateQrCodeImg(String content, String imgPath) { /** * 设置画板的大小 * 注意:只能大不能小,大了二维码边上有空白,能扫出来 * 但是小了是扫描不出来的,因为小了生成的二维码不完整 */ int width = 233; int height = 233; /** 创建Qrcode对象 */ Qrcode qrcode = new Qrcode(); /** 设置二维码纠错级别 可选项L(7%),M(15%),Q(25%),H(30%) */ qrcode.setQrcodeErrorCorrect('M'); /** 设置二进制 */ qrcode.setQrcodeEncodeMode('B'); /** 设置版本号,版本号决定了生成的字符长度 */ qrcode.setQrcodeVersion(15); /** 获取画板 */ BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); /** 获取画笔 */ Graphics2D grap = img.createGraphics(); /** 设置背景颜色 */ grap.setBackground(Color.WHITE); /** 创建一个二维码的区域 */ grap.clearRect(0, 0, width, height); /** 设置画笔颜色 */ grap.setColor(Color.BLACK); /** 获取内容字节数组,设置编码集 */ try { byte[] contentBytes = content.getBytes("utf-8"); /** 生成二维码(是一个二维数组) */ boolean[][] codeOut = qrcode.calQrcode(contentBytes); /** 设置偏移量 */ int offSet = 1; for(int i = 0; i < codeOut.length; i++) { for(int j = 0; j < codeOut.length; j++) { if(codeOut[i][j]) { grap.fillRect(i*3+offSet, j*3+offSet, 3, 3); } } } /** 释放资源 */ grap.dispose(); img.flush(); /** 生成二维码图片 */ File imageFile = new File(imgPath); ImageIO.write(img, "jpg", imageFile); System.out.println("成功生成二维码"); System.out.println("content = " + content); /** 调试的时候注意观察打印出来的路径 */ System.out.println("imgPath = " + imgPath); } catch (Exception e) { e.printStackTrace(); } }}
2,前台jsp的实现
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>二维码通讯录</title> <script type="text/javascript" src="js/jquery-1.11.1.js"></script> <script type="text/javascript"> $(function() { $("#button_id").click(function() { var name = "",phone="",address="",company="",url=""; if($("#name_id").val().length > 0) { name = "FN:" + $("#name_id").val() + "\n"; }else { alert("请输入名字"); return; } if($("#phone_id").val().length > 0) { phone = "TEL;HOME:" + $("#phone_id").val() + "\n"; }else { alert("请输入正确的手机号"); return; } if($("#address_id").val().length > 0) { address = "ADR;HOME:" + $("#address_id").val() + "\n" } if($("#company_id").val().length > 0) { company = "ADR;WORK:" + $("#company_id").val() + "\n" } if($("#url_id").val().length > 0) { url = "URL:" + $("#url_id").val() + "\n" } var info = "BEGIN:VCARD\n"+name+phone+address+company+url+"END:VCARD"; $.ajax({ url:"result.jsp", type:"post", data:{"content":info}, success:function(result) { $("#div_id").html("<img src="+result); } }); }); }); </script> </head> <body> <br> <h3 align="center">二维码通讯录系统</h3> <center>姓 名:<input id="name_id" type="text"/></center><br> <center>手机号码:<input id="phone_id" type="text"/></center><br> <center>家庭住址:<input id="address_id" type="text"/></center><br> <center>单位地址:<input id="company_id" type="text"/></center><br> <center>个人主页:<input id="url_id" type="text"/></center><br> <center><button id="button_id" type="button"> 生成通讯录二维码 </button></center><br> <center><div id="div_id" height="233" width="233"></div></center><br> </body></html>
3,关于手机通讯录的vCard设计
在前台页面的实现中,获得用户输入的名字时:name = "FN:" + $("#name_id").val() + "\n";
,这里的”FN:”就是标准通信薄的基本格式,包括”TEL;HOME:”、”ADR;HOME:”、”ADR;WORK:”、”URL:”等。手机通讯录就是通过这些格式来进行识别的,还有很多其他选项,具体可见百科中对vCard的具体解释,在“标准通信薄基本格式”一栏中。
4,生成通讯录二维码的后台实现
<%@ page language="java" import="java.util.*,com.qixiaoqi.utils.*" pageEncoding="utf-8"%><%@page import="javax.imageio.ImageIO"%><% request.setCharacterEncoding("utf-8"); String content = request.getParameter("content"); String fileName = "qrcode_" + new Date().getTime() + ".jpg"; String imgPath = request.getRealPath("/") + fileName; GenerateQrcodeUtils.GenerateQrCodeImg(content, imgPath); out.print(fileName);%>
阅读全文
0 0
- 二维码通讯录的实现
- 带二维码的通讯录
- android 通讯录的实现
- 通讯录的实现
- 手机通讯录的实现
- 通讯录的简单实现
- 通讯录的简单实现
- 通讯录的实现
- 通讯录的静态实现
- 通讯录的动态实现
- 通讯录的简单实现
- 通讯录的原型实现(-)
- 通讯录的实现
- 静态通讯录的实现
- 简单通讯录的实现
- 动态通讯录的实现
- 简单通讯录的实现
- IOS二维码的实现
- ArrayList
- HyperLedger Fabric:自顶向下的方法--第1篇 编译fabric源码及手工搭建单个Peer节点网络
- CSS 让数字滑动显示
- 泛型类与接口、泛型方法
- POJ-2386题解
- 二维码通讯录的实现
- Align With View和Align View To Select之妙用
- wait()函数,自杀函数abort(),WIFEXITED WIFSIGNALED
- Vue新手入门-1
- Sprites,Editor使图片生成prefab
- 数据库Oracle 数据导入/导出说明
- python any()和all()用法
- Rhyme/Java自定义队列
- 大整数加法(函数)