1 使用Goole的类库,下载地址http://pan.baidu.com/s/1jGy7D5s

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;import javax.imageio.ImageIO;import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;public class Qrgoole {private static final int IMAGE_WIDTH = 15;private static final int IMAGE_HEIGHT = 15;private static final int IMAGE_HALF_WIDTH = IMAGE_WIDTH / 2;private static final int FRAME_WIDTH = 2;private static MultiFormatWriter mutiWriter = new MultiFormatWriter();public static void encode(String text, int width, int height,String srcImagePath, String destImagePath) {try {ImageIO.write(genBarcode(text, width, height, srcImagePath),"jpg", new File(destImagePath));} catch (IOException e) {e.printStackTrace();} catch (WriterException e) {e.printStackTrace();}}private static BufferedImage genBarcode(String content, int width,int height, String srcImagePath) throws WriterException,IOException {BufferedImage scaleImage = scale(srcImagePath, IMAGE_WIDTH,IMAGE_HEIGHT, false);int[][] srcPixels = new int[IMAGE_WIDTH][IMAGE_HEIGHT];for (int i = 0; i < scaleImage.getWidth(); i++) {for (int j = 0; j < scaleImage.getHeight(); j++) {srcPixels[i][j] = scaleImage.getRGB(i, j);}}Hashtable<EncodeHintType,Object> hint = new Hashtable<EncodeHintType, Object>();hint.put(EncodeHintType.CHARACTER_SET, "utf-8");hint.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);BitMatrix matrix = mutiWriter.encode(content, BarcodeFormat.QR_CODE,width, height, hint);int halfW = matrix.getWidth() / 2;int halfH = matrix.getHeight() / 2;int[] pixels = new int[width * height];for (int y = 0; y < matrix.getHeight(); y++) {for (int x = 0; x < matrix.getWidth(); x++) {if (x > halfW - IMAGE_HALF_WIDTH&& x < halfW + IMAGE_HALF_WIDTH&& y > halfH - IMAGE_HALF_WIDTH&& y < halfH + IMAGE_HALF_WIDTH) {pixels[y * width + x] = srcPixels[x - halfW+ IMAGE_HALF_WIDTH][y - halfH + IMAGE_HALF_WIDTH];}else if ((x > halfW - IMAGE_HALF_WIDTH - FRAME_WIDTH&& x < halfW - IMAGE_HALF_WIDTH + FRAME_WIDTH&& y > halfH - IMAGE_HALF_WIDTH - FRAME_WIDTH && y < halfH+ IMAGE_HALF_WIDTH + FRAME_WIDTH)|| (x > halfW + IMAGE_HALF_WIDTH - FRAME_WIDTH&& x < halfW + IMAGE_HALF_WIDTH + FRAME_WIDTH&& y > halfH - IMAGE_HALF_WIDTH - FRAME_WIDTH && y < halfH+ IMAGE_HALF_WIDTH + FRAME_WIDTH)|| (x > halfW - IMAGE_HALF_WIDTH - FRAME_WIDTH&& x < halfW + IMAGE_HALF_WIDTH + FRAME_WIDTH&& y > halfH - IMAGE_HALF_WIDTH - FRAME_WIDTH && y < halfH- IMAGE_HALF_WIDTH + FRAME_WIDTH)|| (x > halfW - IMAGE_HALF_WIDTH - FRAME_WIDTH&& x < halfW + IMAGE_HALF_WIDTH + FRAME_WIDTH&& y > halfH + IMAGE_HALF_WIDTH - FRAME_WIDTH && y < halfH+ IMAGE_HALF_WIDTH + FRAME_WIDTH)) {pixels[y * width + x] = 0xfffffff;} else {pixels[y * width + x] = matrix.get(x, y) ? 0xff000000: 0xfffffff;}}}BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);image.getRaster().setDataElements(0, 0, width, height, pixels);return image;}private static BufferedImage scale(String srcImageFile, int height,int width, boolean hasFiller) throws IOException {double ratio = 0.0; System.out.println("scale():"+ srcImageFile);File file = new File(srcImageFile);BufferedImage srcImage = ImageIO.read(file);Image destImage = srcImage.getScaledInstance(width, height,BufferedImage.SCALE_SMOOTH);if ((srcImage.getHeight() > height) || (srcImage.getWidth() > width)) {if (srcImage.getHeight() > srcImage.getWidth()) {ratio = (new Integer(height)).doubleValue()/ srcImage.getHeight();} else {ratio = (new Integer(width)).doubleValue()/ srcImage.getWidth();}AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(ratio, ratio), null);destImage = op.filter(srcImage, null);}if (hasFiller) {BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);Graphics2D graphic = image.createGraphics();graphic.setColor(Color.white);graphic.fillRect(0, 0, width, height);if (width == destImage.getWidth(null))graphic.drawImage(destImage, 0, (height - destImage.getHeight(null)) / 2, destImage.getWidth(null),destImage.getHeight(null), Color.white, null);elsegraphic.drawImage(destImage,(width - destImage.getWidth(null)) / 2, 0, destImage.getWidth(null), destImage.getHeight(null),Color.white, null);graphic.dispose();destImage = image;}return (BufferedImage) destImage;}public static void main(String[] args) {Qrgoole.encode("http://www.baidu.com/",85, 85, "c:\\a.jpg", "c:\\2015-7-18.jpg");}
}

2 使用的类库,下载地址 http://pan.baidu.com/s/1kT9va2z

 import java.io.*; import java.util.Date; import java.awt.*; import java.awt.image.*; import javax.imageio.*; import com.swetake.util.Qrcode; public class QrCode { static int width = 90; static int height = 90; public QrCode() { } public static void create_image(String sms_info)throws Exception{ try{ Qrcode testQrcode =new Qrcode(); testQrcode.setQrcodeErrorCorrect('M'); testQrcode.setQrcodeEncodeMode('B'); testQrcode.setQrcodeVersion(7); String testString = sms_info; byte[] d = testString.getBytes("gbk"); BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY); Graphics2D g = bi.createGraphics(); g.setBackground(Color.WHITE); g.clearRect(0, 0, width, height); g.setColor(Color.BLACK); // 限制最大字节数为119 if (d.length>0 && d.length <120){ boolean[][] s = testQrcode.calQrcode(d); for (int i=0;i<s.length;i++){ for (int j=0;j<s.length;j++){ if (s[j][i]) { g.fillRect(j*2,i*2,2,2); } } } } g.dispose(); bi.flush(); File f = new File("c:\\a.jpg"); if(!f.exists()) f.createNewFile(); ImageIO.write(bi, "jpg", f); } catch (Exception e) { e.printStackTrace(); }  } public static void main(String[] args) throws Exception { String string = "http://www.baidu.com/"; QrCode.create_image(string); }  }

二维码生成代码(Java)相关推荐

  1. 在office2007中用vba代码写出二维码生成代码

    在 Office 2007 中,可以使用 Visual Basic for Applications (VBA) 代码来生成二维码.以下是一个简单的示例代码: Sub GenerateQRCode() ...

  2. linux下二维码生成代码

    安装qrencode 库 sudo apt-get install qrencode #include <iostream> #include <cstdio> #includ ...

  3. java二维码生成代码_java快速开发平台功能特点之代码生成器

    要说做代码生成器的初衷,还是因为在做公司项目的时候,有太多的功能页面需要处理,在前后端上面,虽然也选择了一个基础的SSH框架系统作为基础,但还是耗费了大量的时间去一点点补代码,再加上业务的需求并不是非 ...

  4. Java实现二维码生成

    title: Java实现二维码生成 categories: "Java" 前言 日前生活上存在很多扫描二维码的场景,支付.加好友-等操作都需要扫描二维码,然后我就在想Java能不 ...

  5. Java常见应用——Json,二维码生成,加密解密应用

    Java常见应用--Json,二维码生成,加密解密应用 一.JSON 1.下载json架包,json官网:json.org 2.将Map/JavaBean/String转化成json对象,只需要使用J ...

  6. Android之二维码生成与识别 读取相册

    二维码生成与扫描 转自http://blog.csdn.net/u012702547/article/details/51501350 读取相册二维码 转自http://blog.csdn.net/a ...

  7. 二维码生成与识别 API 结合之活动签到系统的设计与实现

    引言 活动签到是各类会议.展览和社交活动中必不可少的环节.传统的签到方式常常繁琐且容易出错,因此,采用二维码技术进行签到已成为一种常见的解决方案. 本文将介绍一种利用二维码生成 API 和二维码识别 ...

  8. 玩转Android之二维码生成与识别

    二维码,我们也称作QRCode,QR表示quick response即快速响应,在很多App中我们都能见到二维码的身影,最常见的莫过于微信了.那么今天我们就来看看怎么样在我们自己的App中集成二维码的 ...

  9. [转]java二维码生成与解析代码实现

    转载地址:点击打开链接 二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编码,信息容量大 可容纳多达1850个大 ...

最新文章

  1. Rstudio 实现 爬虫 文本分词 个性化词云设计--我爱中国我爱党
  2. 性能堪比GPT-3,但参数量仅为0.1%,LMU团队推出NLP最强文本生成模型
  3. 颜宁教授当年若当选科学院院士,她还会出走清华吗?
  4. eclipse 项目 无法 rename
  5. SpringBoot时间格式化
  6. PHP之Trait详解
  7. string.Empty与,null的区别
  8. DELL戴尔开启/关闭触摸板方法
  9. 《人月神话》:焦油坑
  10. Revisit Knowledge Distillation: a Teacher-free Framework
  11. 干货满满!亲测国内四大AI智能抠图网站
  12. C语言绘图示例-调色板
  13. [RK3288][Android6.0] 用户空间对音频寄存器的控制
  14. 使用百度BAE部署JavaWeb项目+SVN的使用
  15. CSAPP拆弹实验/炸弹实验
  16. java oracle spool,Oracle 数据导出工具 Spool | 学步园
  17. 树莓派3B+:串口通讯
  18. 关于电视剧《狂飙》的一点感悟--贵人相助的重要性
  19. appium连接mumu模拟器,无法连接问题
  20. 职场中最重要的情商,是管理情绪

热门文章

  1. 分数的约分及加减乘除运算
  2. linux随身系统下载,[转载] 随身带着走的作业系统 ~安装Linux作业系统于随身碟~...
  3. 英方联合XSKY星辰天合推出基于对象存储的备份解决方案
  4. opencv图片倾斜矫正
  5. 用turtle绘制中国象棋
  6. vue对接扫码枪(vue)
  7. css 跳跃动画,如何使用纯CSS实现方块跳跃的动画(附源码)
  8. pytorch加载部分参数训练
  9. 昌大软院大神养成计划之网页设计之路第八天
  10. 在Flex4中使用RemoteObjectAMF0来连接fluorine网关