二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...
技术qq交流群:JavaDream:251572072
1.首先介绍一个api.
Zxing是Google提供的关于条码
(一维码、二维码)的解析工具,提供了二维码的生成与解析的方法,现在我简单介绍一下使用Java利用Zxing生成与解析二维码
2、二维码的生成
1.1 将Zxing-core.jar 包加入到classpath下。
1.2 二维码的生成需要借助MatrixToImageWriter类,
该类是由Google提供的,可以将该类拷贝到源码中,这里我将该类的源码贴上,可以直接使用。
import com.google.zxing.common.BitMatrix;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.OutputStream;
import java.io.IOException;
import java.awt.image.BufferedImage;
public final class MatrixToImageWriter {
private static final int BLACK = 0xFF000000;
private static final int WHITE = 0xFFFFFFFF;
private MatrixToImageWriter() {}
public 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;
}
public 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);
}
}
public 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);
}
}
}
------------------------------------------------------------------------
2.下面创建一个javaproject来生成名片
------------------------------------------
项目结构如下:
ErWerMa
/ErWerMa/src
credream
credream.main
/ErWerMa/src/credream/main/CreQcode.java
credream.utils
/ErWerMa/src/credream/utils/MatrixToImageWriter.java
/ErWerMa/src/Zxing-core.jar
-------------------------------------------------------------
package credream.main;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import credream.utils.MatrixToImageWriter;
public class CreQcode {
public static void main(String[] args) {
try {
//1.下面是我测试用的一个format
//
BEGIN:VCARD
//
"VERSION:3.0
//
N:李德伟
//
EMAIL:1606841559@qq.com
//
TEL:12345678912
//
TEL;CELL:12345678912
//
ADR:山东济南齐鲁软件园
//
ORG:济南
//
TITLE:软件工程师
//
URL:http://blog.csdn.net/lidew521
//
NOTE:呼呼测试下吧。。。
//
END:VCARD"
//2.根据测试结果推理
//---------------------------------------
//测试结果不加回车是不行的这样的话会出现问题
//就是扫描出来以后会没有内容
//这里可以看出,微信解析二维码的方式
//-------------------------------------------------
//3.测试\n可以被二维码识别
// 这里也是有原因的,因为微信扫描二维码后会进行二次加工,
// 这里加工的时候,是用java代码的,因为是android系统,所以在
// java中的回车是\n,因此这里就要用\n来分割
String content = "BEGIN:VCARD\n" +
"VERSION:3.0\n" +
"N:李德伟\n" +
"EMAIL:1606841559@qq.com\n" +
"TEL:12345678912" +
"TEL;CELL:12345678912" +
"ADR:山东济南齐鲁软件园\n" +
"ORG:" +
"济南\n" +
"TITLE:软件工程师\n" +
"URL:http://blog.csdn.net/lidew521\n" +
"NOTE:呼呼测试下吧。。。\n" +
"END:VCARD";
String path = "D:/4S";
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
Map hints = new HashMap();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, 400, 400,hints);
File file1 = new File(path,"名片.jpg");
MatrixToImageWriter.writeToFile(bitMatrix, "jpg", file1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
-----------------------------------------------------------------------
3.搞定了这样就可以了
用微信扫描后,会自动出现保存页面,然后用户可以选择保存到通讯录中
------------------------------------------------------------------
4.分析:
a.这里有些亲们可能以为,扫描出来是个页面,就以为二维码里存放了一个jsp类似的页面
其实这样想是错误的
b.很好证明,因为用微信或者qq可以把扫描的内容加到通讯录里,但是用普通的二维码扫描软件是不可以的
这就说明,其实二维码中存放的仅仅是一串被格式化了的数据而已,这段数据在上文中有提到
c.微信之所以能够扫描成联系人的格式,是因为微信内部做了处理,这里处理过程应该是这样的
首先微信会调用二维码api来解析二维码
d.其次微信会用解析出来的内容填充的实现准备好的jsp页面中,然后,在这个jsp页面中,就存在一段
可以跟微信程序中java方法,联系的js代码,这样就可以通过微信中的java方法,调用android系统的通讯录了
(这个部分说的可能不太清楚,android中js和java方法是可以相互调用传值的,大家可以学习下android,通讯录部分,也可以参考下
我以前写过的android教程)
分享到:
相关推荐
二维码相关 java生成二维码名片 并且自动保存到手机通讯录中 参考这篇博文: http: blog csdn net lidew521 article details 24441825
代码生成二维码
利用java自动识别图片中的二维码并解析二维码中的数据利用java自动识别图片中的二维码并解析二维码中的数据利用java自动识别图片中的二维码并解析二维码中的数据利用java自动识别图片中的二维码并解析二维码中的数据...
iOS 二维码扫描 - 生成二维码图片-扫描二维码图片
1.通过QRCode.jar包生成二维码,可设置二维码图片格式,二维码图片存放路径,二维码尺寸,二维码颜色 2.二维码扫描内容分为两种,1种为链接式,如:www.zdkc.com,通过链接展示访问的内容,1种为json数据展示,通过...
生成后的二维码,用360的扫一扫或者微信的扫一扫后,自动形成一个用户的名片身份, 可以直接保存到手机通讯录中, 非常方便。 包含的名片信息: 姓名+手机+电话+邮箱+网址+公司+地址。
微信小程序源码-二维码生成器.zip微信小程序源码-二维码生成器.zip微信小程序源码-二维码生成器.zip微信小程序源码-二维码生成器.zip微信小程序源码-二维码生成器.zip微信小程序源码-二维码生成器.zip微信小程序源码...
Winfrom生成二维码源码--201903
.net生成和解析二维码及调用摄像头识别二维码源码-U99.rar.net生成和解析二维码及调用摄像头识别二维码源码-U99.rar
https://blog.csdn.net/my_batis/article/details/111193350 效果图查看地址 测试 连接: http://localhost:8086/musice/qrcode
Java生成名片式的二维码源码
Winfrom生成二维码源码--值得下载
网上有很多通过传递相应的参数即可生成相应的二维码展示,这里我介绍一种通过weapp-qrcode.js来生成相应的二维码。方便快捷又比较简单,使用场景适合uni-app,小程序以及网页。
二维码生成-1.0.apk
zxing 生成二维码名片.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
全国社保卡服务平台-电子社保卡-二维码扫描-获取个人信息-代码
基于js的小程序-二维码生成器.zip 基于js的小程序-二维码生成器.zip 基于js的小程序-二维码生成器.zip 基于js的小程序-二维码生成器.zip 基于js的小程序-二维码生成器.zip 基于js的小程序-二维码生成器.zip 基于js的...
识别剪切板中的二维码,可以将生成的二维复制到剪切板。最新功能支持导入码内容文件批量生成二维码,支持生成带中国二维码注册解析中心(IDcode)认证的二维码。 运行方式:1、在项目上右击 运行java程序,入口在...
通过微信小程序接口,生成带参数的二维码,并下载之本地返回二维码图片地址
java中二维码生成和解析的必须jar包 以及完整的java代码 可以直接使用