二维码相关---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生成二维码名片,并且自动保存到手机通讯录中...相关推荐

  1. 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中...

    版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/244418 ...

  2. java 生成二维码后叠加LOGO并转换成base64

    1.代码 见文末推荐 2.测试 测试1:生成base64码 public static void main(String[] args) throws Exception {String data = ...

  3. 使用Java生成二维码

    二维码应该称为二维条码,扫描之后可以获得更多数据 QR码全称为快速响应矩阵码,1994年日本一个公司发明 黑色表示1,白色表示0 3个角落比较像"回"字,叫定位点 容错机制,当7% ...

  4. Java生成二维码底部带文字并且返回前端使用img接收

    目录 1.java生成二维码工具类 2.web测试 3.前端处理 4.测试结果 背景 本demo主要针对jdk1.6版本的,但是高版本的同样可以用,如果觉得不舒服可以自行添加高版本的依赖包. 准备工具 ...

  5. java 生成二维码 QRCode、zxing 两种方式

    版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...

  6. 如何使用 Java 生成二维码?

    1. 下载jar包(QRCode.jar) 下载网址如下: QRCode生成二维码网址:http://swetake.com/qrcode/index-e.html 2. maven项目手动引入jar ...

  7. java二维码生成_如何使用 Java 生成二维码?

    精品专栏 <GitHub:中文详细注释的开源项目> 1. 下载jar包(QRCode.jar)2. maven项目手动引入jar包3. 编写实体类实现二维码的生成4. controller ...

  8. java生成二维码打印到浏览器

    java生成二维码打印到浏览器 解决方法: pom.xml的依赖两个jar包: <!-- https://mvnrepository.com/artifact/com.google.zxing/ ...

  9. Java生成二维码带LOGO底部标题竖版字体

    前言 Java后端生成二维码 底部 侧面带有标题,可调节字号 参考文章 使用Java生成二维码图片(亲测) Reborn_YY使用Java生成二维码图片 图标素材库 Java后台生成图片,前台实现图片 ...

最新文章

  1. python os模块下载_Python OS模块目录文件处理
  2. 【干货笔记】CS224n-2019 学习笔记 Lecture 01 Introduction and Word Vectors
  3. 发现新的预言梦种类:预言梦投射
  4. Idea在启动Debug功能时报错:Unable to open debugger port (127.0.0.1:63985):
  5. 《阿丽塔:战斗天使》:人类与机器人真的有爱情吗?
  6. MOOC 中国大学 python爬取股票信息
  7. Frp内网穿透保姆级教程 windows内网穿透
  8. 【poj3311】Hie with the Pie
  9. 导入 xlsx php,php如何使用phpexcel类导入excel表格数据
  10. 美股分时交易数据 API 接口
  11. mobi格式文件解压实践
  12. 爬虫实战——中国天气网数据
  13. linux vnc登陆,vnc登陆,4个步骤教你vnc登陆Linux
  14. 面试数据分析师岗位要注意的几点
  15. 100-days: twenty-four
  16. canvas宽高设置
  17. H5移动端项目实现手写签名功能 vue实现手写签名
  18. MySQL八小时时间差
  19. 地质工程要学计算机吗,地质工程主要做什么?
  20. elementary os网易云音乐托盘图标不显示菜单解决方法

热门文章

  1. 乐观锁 VS 悲观锁(简述)
  2. 机器学习笔记——随机森林
  3. python将excel文件变成txt文件
  4. 安装配置 TensorFlow on Android
  5. 详解CNN五大经典模型:Lenet,Alexnet,Googlenet,VGG,DRL
  6. hippocampal subfield module 安装与使用
  7. 《Programming in Lua 3》读书笔记(十三)
  8. poj3259 Wormholes(spfa判负环)
  9. 从职业方向,谈程序员如何突破成长瓶疾,我们该怎么去学习?
  10. Android基础巩固进阶