java 二维码名片流文件下载
感谢同事帮忙,这个主要是生成二维码名片,然后点击下载链接进行下载。
这是中文版
public void genChineseQrCode(){StringBuffer content = new StringBuffer();if(sysUser.getId() != null){SysUser user = sysUserBusiness.findById(sysUser.getId());content.append("BEGIN:VCARD\n" +"VERSION:3.0\n");if(user.getName() != null){String name = user.getName();content.append("FN:"+ name.substring(1,name.length())+" "+ name.charAt(0) +"\n" +"N:"+ name.charAt(0)+";"+ name.substring(1,name.length()) +"\n");}if(user.getChCardPositionName() != null){content.append("TITLE: " + user.getChCardPositionName()+"\n");}if(user.getMobile() != null){String mobile = user.getMobile();content.append("TEL;CELL:+86 " +mobile.substring(0, 3)+ " " + mobile.substring(3, 7) +" "+ mobile.substring(7, 11) +"\n");}content.append("TEL;WORK;VOICE:+86 21 3353 2222\n");content.append("TEL;WORK;FAX:+86 21 3353 2222\n");if(user.getEmail() != null){content.append("EMAIL;WORK;INTERNET:"+ user.getEmail() +"\n");}content.append("URL:http://www.baidu.com\n" +"ORG:百度有限公司\n" +"END:VCARD");this.getQrCode(content.toString(),user.getName(),"ch");}}
这是英文版
public void genEnglishQrCode(){StringBuffer content = new StringBuffer();if(sysUser.getId() != null){SysUser user = sysUserBusiness.findById(sysUser.getId());content.append("BEGIN:VCARD\n" +"VERSION:3.0\n") ;if(user.getEnName() != null){String enName = user.getEnName();content.append("FN:"+ enName.substring(0, enName.lastIndexOf("."))+ " " + enName.substring(enName.lastIndexOf(".") + 1, enName.length()) +"\n" +"N:"+ enName.substring(enName.lastIndexOf(".") + 1, enName.length()) + ";" +enName.substring(0, enName.lastIndexOf(".")) +"\n") ;}if(user.getEnCardPositionName() != null){content.append("TITLE:" + user.getEnCardPositionName()+"\n");}if(user.getMobile() != null){String mobile = user.getMobile();content.append("TEL;CELL:+86 " +mobile.substring(0, 3)+ " " + mobile.substring(3, 7) +" "+ mobile.substring(7, 11) +"\n");}content.append("TEL;WORK;VOICE:+86 21 3353 2222\n");content.append("TEL;WORK;FAX:+86 21 3353 2222\n");if(user.getEmail() != null){content.append("EMAIL;WORK;INTERNET:"+user.getEmail()+"\n");}content.append("URL:http://www.baidu.com\n" +"ORG:BAIDU ELECTRONIC TECHNOLOGY CO.,LTD.\n" +"END:VCARD");this.getQrCode(content.toString(),user.getName(),"en");}}
这是生成二维码图片代码
public void getQrCode(String content,String name,String tag){BufferedImage bufImg = null;try {Qrcode qrcodeHandler = new Qrcode(); // 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小 qrcodeHandler.setQrcodeErrorCorrect('M'); qrcodeHandler.setQrcodeEncodeMode('B'); // 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大 qrcodeHandler.setQrcodeVersion(13);// 获得内容的字节数组,设置编码格式 byte[] contentBytes = content.getBytes("utf-8");// 图片尺寸 int imgSize = 67 + 12 * (13 - 1);bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB); Graphics2D gs = bufImg.createGraphics();// 设置背景颜色 gs.setBackground(Color.WHITE);gs.clearRect(0, 0, imgSize, imgSize); // 设定图像颜色> BLACK gs.setColor(Color.BLACK); // 设置偏移量,不设置可能导致解析出错 int pixoff = 2; // 输出内容> 二维码 if (contentBytes.length > 0 && contentBytes.length < 800) {boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes); for (int i = 0; i < codeOut.length; i++) { for (int j = 0; j < codeOut.length; j++) { if (codeOut[j][i]) { gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);}}} } else {throw new Exception("QRCode content bytes length = " + contentBytes.length + " not in [0, 800].");} gs.dispose(); bufImg.flush();OutputStream os = getResponse().getOutputStream();ImageIO.write(bufImg, "png", os);File file = null;if(tag == "en"){file = new File(name + "英文版.png");}else{file = new File(name + "中文版.png");}ImageIO.write(bufImg, "png", file);getRequest().getSession().setAttribute("file", file);} catch (Exception e) { e.printStackTrace(); } }
这是下载代码,具有弹出框功能
/*** 二维码下载*/@SuppressWarnings("static-access")public void download() throws UnsupportedEncodingException{File file = (File)getRequest().getSession().getAttribute("file");try {new Download().download(getRequest(), getResponse(), file);} catch (IOException e) {e.printStackTrace();}}
这是在DownLoad()类里面
public static void download(HttpServletRequest req, HttpServletResponse resp, File file) throws IOException {resp.setContentType("application/x-msdownload");resp.setHeader("Content-Disposition", "attachment; filename="+ new String(file.getName().getBytes("GBK"),"ISO-8859-1"));int fileLength = (int) file.length();resp.setContentLength(fileLength);if (fileLength != 0) {InputStream ins;try {ins = new FileInputStream(file);byte[] buf = new byte[4096];ServletOutputStream sos;try {sos = resp.getOutputStream();int readLength;while (((readLength = ins.read(buf)) != -1)) {sos.write(buf, 0, readLength);}ins.close();sos.flush();sos.close();} catch (IOException e) {e.printStackTrace();}} catch (FileNotFoundException e) {e.printStackTrace();}}}
java 二维码名片流文件下载相关推荐
- Atitit java 二维码识别 图片识别
Atitit java 二维码识别 图片识别 1.1. 解码1 1.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.1 1.3. 二维码的样例:2 1.4. 定位图案2 1. ...
- java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例
java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍 这里我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream o ...
- java二维码生成 使用SSM框架 搭建属于自己的APP二维码合成、解析、下载
java二维码生成 使用SSM框架 搭建属于自己的APP二维码合成.解析.下载 自己用java搭建一个属于自己APP二维码合成网站.我的思路是这样的: 1.用户在前台表单提交APP的IOS和Andro ...
- java二维码的生成工具
java二维码的生成工具 1.导入jar包,我是用的是一个谷歌提供的 <dependency><groupId>com.google.zxing</groupId> ...
- 【笔记11】uniapp点击复制;mysql数据库存储emoji表情;Java 二维码生成;uniapp引入自定义图标
目录 前言 一.uniapp 实现点击复制某段文本 二.MySQL 数据库存储 emoji 表情 三.Layui 的富文本编辑器 四.谷歌 Java 二维码生成 (1) 引入 MAVEN 依赖 五.微 ...
- java二维码编码生成并转换成流传入前端页面
java二维码编码生成并转换成流传入前端页面 这里主要用了com.google.zxing的依赖,这个依赖主要可以完成图片叠加.二维码生成和图片加文字等功能. ①添加依赖 <dependency ...
- java 二维码生成和解析
2019独角兽企业重金招聘Python工程师标准>>> <!-- 二维码 --><dependency><groupId>com.google.z ...
- java二维码生成技术
自从微信扫描出世,二维码扫描逐渐已经成为一种主流的信息传递和交换方式.下面就介绍一下我学习到的这种二维码生成方式.预计再过不久身份证户口本等都会使用二维码识别了,今天就做一个实验案例: 二维码主要实现 ...
- java二维码生成_如何使用 Java 生成二维码?
精品专栏 <GitHub:中文详细注释的开源项目> 1. 下载jar包(QRCode.jar)2. maven项目手动引入jar包3. 编写实体类实现二维码的生成4. controller ...
最新文章
- 计算机视觉顶尖期刊和会议的段子
- php手册常用的函数
- 基于clang插件的一种iOS包大小瘦身方案
- 获取当天是当年/当月的第几周
- 用python简单处理图片(4):图像中的像素访问
- Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾
- java实现未读消息提醒_Android自定义View之未读消息提示
- matlab impyramid图像金字塔
- pandas插入新列
- 用JQuery操作元素的style属性
- 吴恩达深度学习2.3笔记_Improving Deep Neural Networks_超参数调试 和 Batch Norm
- 将一个大文件分割为若干个小文件的方法
- calcite learn
- 偶像的力量-松哥经典语录
- 软碟通系统U盘制作教程
- 【英语词组】恋恋不忘Day4-5
- SPI控制MS5614T
- 用laravel写一个API
- 西邮Linux小组免试题揭秘
- 17前端学习之JQuery基础(一):jQ介绍,jQ基本使用,jQ选择器,jQ样式操作,jQ动画效果
热门文章
- 设置滚动条默认样式 谷歌浏览器
- android中PAG的简单使用
- 【计算机毕业设计】医院设备管理系统
- c语言 4x4矩阵乘法,c - 高效的4x4矩阵乘法(C vs汇编) - 堆栈内存溢出
- 基于dlib进行人脸检测
- 数组的四种排序方法介绍
- 使用Node.js+React+EUI快速搭建网页应用
- 小明有N(4≤N≤60)个玻璃球,他想将N个玻璃球拆分成若干份(份数≥2,且每份中的数量互不相等),从而使拆分后的每份玻璃球数量的乘积最大。请你编写程序帮助小明计算出最大乘积是多少...
- Java与多串口通讯(二)
- [SHOI 2017] 组合数问题