`
shenjun134
  • 浏览: 17103 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

二维码的生成

    博客分类:
  • java
 
阅读更多
package com.gce;

import java.io.*;
import java.util.Date;

import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import com.swetake.util.Qrcode;

public class QRCodeEncoderTest
{

 /** Creates a new instance of QRCodeEncoderTest */
 public QRCodeEncoderTest()
 {
 }
 
 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");
            System.out.println(d.length);
            //BufferedImage bi = new BufferedImage(98, 98, BufferedImage.TYPE_INT_RGB);
            BufferedImage bi = new BufferedImage(98, 98, BufferedImage.TYPE_BYTE_BINARY);
            Graphics2D g = bi.createGraphics();
            g.setBackground(Color.WHITE);
            g.clearRect(0, 0, 98, 98);
            g.setColor(Color.BLACK);
            
            // 限制最大字节数为120
            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+3,i*2+3,2,2);
                        }
                    }
                }
            }
            g.dispose();
            bi.flush();
            File f = new File("D:\\QRCodeTest\\"+sms_info+".jpg");
            if(!f.exists()){
       f.createNewFile();
            }
            //创建图片
            ImageIO.write(bi, "jpg", f);
            
        } // end try
        catch (Exception e) {
            e.printStackTrace();
        } // end catch
 }

 public static void main(String[] args) throws Exception {
        System.out.println(new Date());
        for(int i =1; i < 100000; i ++){
         QRCodeEncoderTest.create_image(i+"");
        }
        System.out.println(new Date());
    } // end main
}

package com.gce;

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;  
  
/** 
 * 二维码生成器 
 * @blog http://sjsky.iteye.com 
 * @author Michael 
 */  
public class QRCodeEncoderHandler {
  
    /** 
     * 生成二维码(QRCode)图片 
     * @param content 
     * @param imgPath 
     */  
    public void encoderQRCode(String content, String imgPath) {  
        try {  
  
            Qrcode qrcodeHandler = new Qrcode();  
            qrcodeHandler.setQrcodeErrorCorrect('M');  
            qrcodeHandler.setQrcodeEncodeMode('B');  
            qrcodeHandler.setQrcodeVersion(7);  
  
            System.out.println(content);  
            byte[] contentBytes = content.getBytes("gb2312");  
  
            BufferedImage bufImg = new BufferedImage(140, 140,  
                    BufferedImage.TYPE_INT_RGB);  
  
            Graphics2D gs = bufImg.createGraphics();  
  
            gs.setBackground(Color.WHITE);  
            gs.clearRect(0, 0, 140, 140);  
  
            // 设定图像颜色 > BLACK  
            gs.setColor(Color.BLACK);  
  
            // 设置偏移量 不设置可能导致解析出错  
            int pixoff = 2;  
            // 输出内容 > 二维码  
            if (contentBytes.length > 0 && contentBytes.length < 120) {  
                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 {  
                System.err.println("QRCode content bytes length = "  
                        + contentBytes.length + " not in [ 0,120 ]. ");  
            }  
  
            gs.dispose();  
            bufImg.flush();  
  
            File imgFile = new File(imgPath);  
  
            // 生成二维码QRCode图片  
            ImageIO.write(bufImg, "png", imgFile);  
  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
  
    }  
  
    /** 
     * @param args the command line arguments 
     */  
    public static void main(String[] args) {  
        String imgPath = "C://Michael_QRCode.png";  
  
        String content = "Hello,welcome to QRCode!"  
                + "\nEMail [ SJ134@gmail.com ]" + "\nTwitter [ @sj134 ]";  
  
        QRCodeEncoderHandler handler = new QRCodeEncoderHandler();  
        handler.encoderQRCode(content, imgPath);  
  
        System.out.println("encoder QRcode success");  
    }
} 

package com.gce;

import java.awt.image.BufferedImage;  
import java.io.File;  
import java.io.IOException;  
  
import javax.imageio.ImageIO;  
  
import jp.sourceforge.qrcode.QRCodeDecoder;  
import jp.sourceforge.qrcode.data.QRCodeImage;  
import jp.sourceforge.qrcode.exception.DecodingFailedException;  
  
/** 
 * @blog http://sjsky.iteye.com 
 * @author Michael 
 */  
public class QRCodeDecoderHandler {  
  
    /** 
     * 解码二维码 
     * @param imgPath 
     * @return String 
     */  
    public String decoderQRCode(String imgPath) {  
  
        // QRCode 二维码图片的文件  
        File imageFile = new File(imgPath);  
  
        BufferedImage bufImg = null;  
        String decodedData = null;  
        try {  
            bufImg = ImageIO.read(imageFile);  
  
            QRCodeDecoder decoder = new QRCodeDecoder();  
            decodedData = new String(decoder.decode(new J2SEImage(bufImg)));  
  
            // try {  
            // System.out.println(new String(decodedData.getBytes("gb2312"),  
            // "gb2312"));  
            // } catch (Exception e) {  
            // // TODO: handle exception  
            // }  
        } catch (IOException e) {  
            System.out.println("Error: " + e.getMessage());  
            e.printStackTrace();  
        } catch (DecodingFailedException dfe) {  
            System.out.println("Error: " + dfe.getMessage());  
            dfe.printStackTrace();  
        }  
        return decodedData;  
    }  
  
    /** 
     * @param args the command line arguments 
     */  
    public static void main(String[] args) {  
        QRCodeDecoderHandler handler = new QRCodeDecoderHandler();  
        String imgPath = "C://Michael_QRCode.png";  
        String decoderContent = handler.decoderQRCode(imgPath);  
        System.out.println("解析结果如下:");  
        System.out.println(decoderContent);  
        System.out.println("========decoder success!!!");  
    }  
  
    class J2SEImage implements QRCodeImage {  
        BufferedImage bufImg;  
  
        public J2SEImage(BufferedImage bufImg) {  
            this.bufImg = bufImg;  
        }  
  
        public int getWidth() {  
            return bufImg.getWidth();  
        }  
  
        public int getHeight() {  
            return bufImg.getHeight();  
        }  
  
        public int getPixel(int x, int y) {  
            return bufImg.getRGB(x, y);  
        }  
  
    }  
}  



这里需要用下面的几个jar包
分享到:
评论

相关推荐

    微信小程序 二维码生成器 (源码)

    微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码生成器 (源码)微信小程序 二维码...

    小程序源码 二维码生成器 (代码+截图)

    小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 (代码+截图)小程序源码 二维码生成器 ...

    二维码生成器(微信小程序)源码.zip

    二维码生成器,一款可以生成二维码的微信小程序。可以生成带LOGO的二维码,也可以设置二维码颜色。 二维码生成器,一款可以生成二维码的微信小程序。可以生成带LOGO的二维码,也可以设置二维码颜色。 二维码生成...

    解压全能我那个二维码生成器加手机安卓程序非精简版

    标题中的“解压全能我那个二维码生成器加手机安卓程序非精简版”指的是一个集成了解压缩功能和二维码生成器的软件应用,特别强调了这不是精简版本,意味着它包含完整的功能集。 1. **解压缩软件**:在IT行业中,解...

    微信小程序 小工具类 二维码生成器 (源代码+截图)

    微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小程序 小工具类 二维码生成器 (源代码+截图)微信小...

    电脑二维码生成器

    二维码生成器是一种便捷的信息编码工具,它能够将各种数据,如文字、网址、名片信息、电子邮箱、电话号码等,转换成二维图形——二维码,供手机、电子扫描器等设备快速读取。在电脑上使用二维码生成器,可以极大地...

    二维码生成-C语言版本

    二维码生成在信息技术领域中是一项常见的任务,特别是在移动设备和物联网应用中。C语言,作为一种基础且广泛应用的编程语言,虽然不如高级脚本语言如Python或Java那样方便地提供现成的库来处理图像和编码,但依然...

    二维码生成器(绝对可用)

    二维码生成器是一种便捷的技术,能够将各种数据,如网址、文本、联系信息等,转换成图形化的二维码,便于快速扫描和读取。本项目利用C#编程语言,并借助NuGet包管理器引入了第三方组件QrCodeNet,使得开发者能够轻松...

    基于stm32的二维码生成程序

    【标题】:“基于STM32的二维码生成程序” 在物联网和嵌入式系统领域,STM32微控制器因其高性能、低功耗以及丰富的资源而被广泛应用。二维码(Quick Response Code)作为一种高效的数据编码方式,已经渗透到我们...

    基于MFC二维码打印工具

    《基于MFC的二维码生成与打印工具详解》 在信息技术高速发展的今天,二维码作为一种便捷的信息载体,被广泛应用于各种场景,如产品标识、网址跳转、电子票务等。而利用编程技术生成并打印二维码,可以进一步提升...

    二维码生成器PC版【中文】

    二维码生成器是一款在个人计算机(PC)上使用的应用程序,专门设计用于创建各种类型的数据编码为二维码,便于快速扫描和信息传递。这款中文版的二维码生成器界面友好,操作简便,适用于那些希望在数字营销、信息分享...

    tiaoxingma.rar_c++二维码生成_二维码_二维码 生成_二维码生成_二维码读取

    掌握C++二维码生成与读取技术,开发者需要理解二维码编码规范,熟悉图像处理原理,并能熟练使用提供的库。通过分析源代码和运行示例,可以深入理解其工作原理,从而在实际项目中灵活运用。 总之,"tiaoxingma.rar...

    VB制作二维码生成程序源码

    【VB制作二维码生成程序源码】是一个基于Visual Basic(VB)开发的项目,它能够创建二维码,这是一种广泛用于存储和传递信息的二维条形码。二维码在现代社会的应用非常广泛,如产品标识、网址链接、电子支付等。通过...

    帝国CMS二维码生成插件

    【帝国CMS二维码生成插件】是一款专为帝国CMS系统设计的实用工具,旨在帮助网站管理员在不依赖外部API,如Google API的情况下,快速便捷地生成和集成二维码功能。这款插件简化了二维码生成的流程,使得在自己的网站...

    微信小程序源码 二维码生成器(学习版)

    微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成器(学习版)微信小程序源码 二维码生成...

    基于java开发的二维码生成小程序

    【基于Java开发的二维码生成小程序】是一个利用Java编程语言实现的实用工具,它能够帮助用户快速生成可扫描的二维码,这些二维码在扫描后能够跳转到预设的网站。这个小程序集成了二维码编码技术,使得非技术人员也能...

    最强国外二维码生成工具源码 URL缩短链接网站源码

    二维码生成工具和URL缩短服务是互联网中非常实用的技术,它们在日常生活中被广泛应用于各种场景,如分享网页、名片交换、广告推广等。本源码集合提供了一款国外开发的PHP程序,旨在帮助用户创建二维码并生成短链接,...

    二维码生成软件.exe

    二维码生成软件.exe

    VSTO二维码生成源码(VB版).zip

    在这个特定的上下文中,"VSTO二维码生成源码(VB版)"指的是使用Visual Basic.NET(VB.NET)语言编写的,集成在Office应用中的二维码生成功能。 首先,我们需要理解二维码的基本原理。二维码(Quick Response Code...

    二维码生成器并加密(js+servlet)

    二维码生成器是一种将数据编码为二维图形的工具,广泛应用于移动支付、信息分享、广告推广等领域。在这个项目中,我们采用JavaScript(js)与Servlet技术来实现一个在线的二维码生成器。JavaScript是一种运行在...

Global site tag (gtag.js) - Google Analytics