`
屌丝学Java
  • 浏览: 29864 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

简单的生成二维码方法

 
阅读更多
     生成一个简单的二维码:
         1、导入二维码jar包:QRCode.jar;
        2、两个类:二维码图片对象类:TwoCodeImage.java;
/**
 * 二维码图片对象
 * @author liupan
 *
 */
public class TwoCodeImage implements QRCodeImage {
	private BufferedImage bufImg;

	public TwoCodeImage(BufferedImage bufImg) {
		this.bufImg = bufImg;
	}

	@Override
	public int getHeight() {
		return bufImg.getHeight();
	}

	@Override
	public int getPixel(int x, int y) {
		return bufImg.getRGB(x, y);
	}

	@Override
	public int getWidth() {
		return bufImg.getWidth();
	}

	
}

                  二维码生成公共工具类:TwoCodeUtils.java;
public class TwoCodeUtils {
	
	public static String encoder(Object obj , String ent_type) throws BusinessException  {
		//String action = Global.MAP_PUBLIC_URL.get (ent_type);		       //获取企业类型 对应的外网公开查询的请求地址
		D_scyp_register dInfo=null;
		D_yljg_register dyljg=null;
		
		String path ="";
//		if(action == null) {
//			 new BusinessException ("二维码生成错误!");
//		}
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
		String content = "";
		if(ent_type.equals("SCYP")){
			dInfo=(D_scyp_register) obj;
			path=Global.getAbsUploadPath(Global.QRCODE_PATH) + dInfo.getLicencecode() + ".png";		//生成二维码图片的路径“upload/qrcode/+许可证号.png”

			content +="许可证号:" +  dInfo.getLicencecode();
			content +="\n企业名称:" + dInfo.getCorp_name();
			content+="\n分类码:"+dInfo.getClass_code();
			content+="\n注册地址:"+dInfo.getRegisteraddress();
			content+="\n生产地址和生产范围:"+dInfo.getProd_scope();
			
			if(dInfo.getSocial_credit_code().length()==18){
				
				content +="\n社会信用代码:" + dInfo.getSocial_credit_code().subSequence(0, 10)+"****"+ dInfo.getSocial_credit_code().substring(14, 18);
			}else{
				content +="\n社会信用代码:" + dInfo.getSocial_credit_code();
			}
			
			content +="\n法定代表人:" + dInfo.getArtificialperson();
			content +="\n企业负责人:" + dInfo.getEnterpriseprincipa();
			content +="\n质量负责人:" + dInfo.getMassprincipal();
			content +="\n有效期至:" + sdf.format(dInfo.getValid_end_date());
			content += "\n发证机关:" +  dInfo.getGrant_org();
			content += "\n签发人:" +  dInfo.getSigner();
			content +="\n发证日期:" + sdf.format(dInfo.getGrant_date());
			content +="\n日常监管机构:" + dInfo.getDaily_supervise_organ();
			content +="\n日常监管人员:" + dInfo.getDaily_supervise_person();
			content +="\n监督举报电话:" + 12331;    		//二维码的内容
			content +="\n证书查询地址:" + "http://www.hebfda.gov.cn/CL0182/";  
		}else if(ent_type.equals("YLJG")){
			dyljg=(D_yljg_register) obj;
			path=Global.getAbsUploadPath(Global.QRCODE_PATH) + dyljg.getLicencecode() + ".png";		//生成二维码图片的路径“upload/qrcode/+许可证号.png”
			
			content +="许可证号:" +  dyljg.getLicencecode();
			content +="\n医疗机构名称:" + dyljg.getCorp_name();
			content+="\n注册地址:"+dyljg.getRegisteraddress();
			content+="\n配置地址和配置范围:"+dyljg.getPzfw();
			
			if(dyljg.getSocial_credit_code().length()==18){
				
				content +="\n社会信用代码:" + dyljg.getSocial_credit_code().subSequence(0, 10)+"****"+ dyljg.getSocial_credit_code().substring(14, 18);
			}else{
				content +="\n社会信用代码:" + dyljg.getSocial_credit_code();
			}
			content +="\n医疗机构类别:" + dyljg.getEnterprisetype();
			content +="\n法定代表人:" + dyljg.getArtificialperson();
			content +="\n制剂室负责人:" + dyljg.getZjsfzr();
			content +="\n质量负责人:" + dyljg.getMassprincipal();
			content +="\n有效期至:" + sdf.format(dyljg.getValid_end_date());
			content += "\n发证机关:" +  dyljg.getGrant_org();
			content += "\n签发人:" +  dyljg.getSigner();
			content +="\n发证日期:" + sdf.format(dyljg.getGrant_date());
			content +="\n日常监管机构:" + dyljg.getDaily_supervise_organ();
			content +="\n日常监管人员:" + dyljg.getDaily_supervise_person();
			content +="\n监督举报电话:" + 12331;    		//二维码的内容
			content +="\n证书查询地址:" + "http://www.hebfda.gov.cn/CL0182/"; 
		}
		TwoCodeUtils.encoderQRCode(content, path);																								//开始生成
		
		/*System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$"+Global.XZSP_ADDRESS );
		System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"+Global.QRCODE_PATH  ); //局端访问网址
		
		path = Global.XZSP_ADDRESS +Global.QRCODE_PATH  + dInfo.getLicencecode() + ".png";	//二维码图片的最终路径
*/		return path;
	} 
	
    /** 
     * 生成二维码(QRCode)图片 
     * @param content 存储内容 
     * @param imgPath 图片路径 
     */  
    public static void encoderQRCode(String content, String imgPath) throws BusinessException  {  
    	TwoCodeUtils.encoderQRCode(content, imgPath, "png", 20);  
    }  
      
    /** 
     * 生成二维码(QRCode)图片 
     * @param content 存储内容 
     * @param output 输出流 
     */  
    public static void encoderQRCode(String content, OutputStream output) throws BusinessException  {  
    	TwoCodeUtils.encoderQRCode(content, output, "png", 20);  
    } 
	
	  /** 
     * 生成二维码(QRCode)图片 
     * @param content 存储内容 
     * @param output 输出流 
     * @param imgType 图片类型 
     */  
    public static void encoderQRCode(String content, OutputStream output, String imgType) throws BusinessException  {  
    	TwoCodeUtils.encoderQRCode(content, output, imgType , 20);  
    }
    
    /** 
     * 生成二维码(QRCode)图片 
     * @param content 存储内容 
     * @param imgPath 图片路径 
     * @param imgType 图片类型 
     */  
    public static void encoderQRCode(String content, String imgPath, String imgType) throws BusinessException  {  
        TwoCodeUtils.encoderQRCode(content, imgPath, imgType , 20);  
    } 
	
    /** 
     * 生成二维码(QRCode)图片 
     * @param content 存储内容 
     * @param imgPath 图片路径 
     * @param imgType 图片类型 
     * @param size 二维码尺寸 
     */  
	public static void encoderQRCode (String content , String imgPath , String imgType , int size) throws BusinessException {
		try {
			BufferedImage bufImg = TwoCodeUtils.qRcodeCommon(content, imgType, size);
			File imgFile = new File(imgPath);
			ImageIO.write(bufImg, imgType, imgFile);
		} catch (Exception e) {
			throw new BusinessException("二维码生成错误!");
		}
	}
	
	  /** 
     * 生成二维码(QRCode)图片 
     * @param content 存储内容 
     * @param output 输出流 
     * @param imgType 图片类型 
     * @param size 二维码尺寸 
     */  
	public static void encoderQRCode(String content , OutputStream output , String imgType , int size) throws BusinessException {
		try {
			BufferedImage bufImg = TwoCodeUtils.qRcodeCommon(content , imgType ,size);
			 // 生成二维码QRCode图片  
			ImageIO.write(bufImg, imgType , output);
		} catch (Exception e) {
			throw new BusinessException("二维码生成错误!");
		}
	}

    /** 
     * 生成二维码(QRCode)图片的公共方法 
     * @param content 存储内容 
     * @param imgType 图片类型 
     * @param size 二维码尺寸 
     * @return 
     */ 
	public static BufferedImage qRcodeCommon (String content , String imgType , int size) throws BusinessException {
		BufferedImage bufImg = null;
		try{
			Qrcode qrcode = new Qrcode();
			// 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小  
			qrcode.setQrcodeErrorCorrect('M');
			qrcode.setQrcodeEncodeMode('B');
			// 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大
			qrcode.setQrcodeVersion(size);
			   // 获得内容的字节数组,设置编码格式
			byte [] contentBytes = content.getBytes("utf-8");
			int imgSize = 67 + 12 * (size - 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 = qrcode.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 BusinessException("二维码生成错误!");
			}
			gs.dispose();
			bufImg.flush();
			
		} catch (Exception e) {
			throw new BusinessException("二维码生成错误!");
		}
		return  bufImg;
	}
	
    /** 
     * 解析二维码(QRCode) 
     * @param imgPath 图片路径 
     * @return 
     */  
	public static String decoderQRCode(String imgPath) throws BusinessException {
		String content = null;
        // QRCode 二维码图片的文件  
		File file = new File(imgPath);
		try {
			BufferedImage bufImg = ImageIO.read(file);
			QRCodeDecoder decoder = new QRCodeDecoder();
			content = new String (decoder.decode(new TwoCodeImage(bufImg)) ,"utf-8");
		} catch (Exception e) {
			throw new BusinessException("解析二维码错误!");
		}
		return content;
	}
	
	/**
    * 解析二维码(QRCode) 
    * @param input 输入流 
    * @return 
    */  
	public static String decoderQRCode(InputStream input) throws BusinessException {
		String content = null;
		BufferedImage bufImg = null;
		try {
			bufImg = ImageIO.read(input);
			QRCodeDecoder decoder = new QRCodeDecoder();
			content = new String(decoder.decode(new TwoCodeImage(bufImg)) , "utf-8");
		} catch (Exception e) {
			throw new BusinessException("解析二维码错误!");
		}
		return content;
	}}


调用工具类的生成方法,就OK了!
分享到:
评论

相关推荐

    nodejs实现超简单生成二维码的方法

    然后通过qr-image插件的image方法生成二维码图片,并将Content-Type设置为image/png,随后将生成的图片数据直接输出到HTTP响应中。 如果在生成二维码的过程中遇到错误,程序会捕获异常,并返回状态码414(Request-...

    C#.NET生成普通二维码方法及生成带图片二维码方法源码Demo

    在C#.NET环境中,生成二维码是一项常见的任务,无论是用于数据编码还是包含图像。本文将详细介绍如何使用C#.NET实现这两种功能:生成普通二维码以及生成带有图片的二维码。 首先,生成普通二维码的基础步骤涉及使用...

    C# 生成二维码源码 可生成图片 底部可显示文字

    然后调用`GetGraphic`方法生成二维码图片。 ```csharp var qrCode = new QRCode(qrCodeData); var qrCodeImage = qrCode.GetGraphic(20); ``` 4. **显示底部文字**:QRCoder库并不直接支持在二维码底部显示文字,...

    JAVA 生成二维码并设置失效机制

    1.通过QRCode.jar包生成二维码,可设置二维码图片格式,二维码图片存放路径,二维码尺寸,二维码颜色 2.二维码扫描内容分为两种,1种为链接式,如:www.zdkc.com,通过链接展示访问的内容,1种为json数据展示,通过...

    原生js生成二维码(完美可用)

    3. **简单的API接口**:仅需引用一个方法即可生成二维码,这意味着使用起来非常方便。例如,你可以通过以下方式在HTML页面中生成二维码: ```html &lt;script src="path/to/your/min.js"&gt;&lt;/script&gt; QRCode....

    生成二维码的方法

    总的来说,生成二维码的过程简单便捷,无论你是普通用户还是开发者,都能轻松掌握。不过,为了保证二维码的可读性和安全性,记得在生成时遵循最佳实践,比如限制数据长度,避免包含敏感信息,以及定期更新二维码内容...

    JAVA生成二维码方法

    ### JAVA生成二维码方法详解 #### 一、二维码简介 二维码是一种在二维空间内存储信息的条形码形式,由黑白相间的图案组成。它能够存储大量数据,包括文本、URL等,并且支持多种编码方式。二维码的设计巧妙地利用了...

    pb生成二维码_125

    【标题】"pb生成二维码_125"指的是在PowerBuilder(PB)环境中实现二维码生成的一个实例项目。这个实例特别适合初学者或者需要快速理解二维码生成逻辑的开发者,因为其设计得简单明了,一看就能理解其工作原理。 ...

    PB生成二维码(ocx控件)_二维码_

    这可能包括设置控件的属性,调用生成二维码的方法,并在需要时更新二维码的显示。例如,当用户输入数据后,触发一个事件,调用 OCX 控件的 Generate 方法生成新的二维码。 5. **测试与调试**:在开发过程中,进行多...

    vb纯代码生成二维码源代码,支持低中高容错生成

    在VB(Visual Basic)编程环境中...总之,了解并掌握VB纯代码生成二维码的方法,不仅可以提升开发效率,还能加深对二维码编码机制的理解,对于从事与数据编码、物联网相关的VB项目开发人员来说,是非常有价值的知识点。

    jsp 生成二维码

    4. **生成二维码**:利用Zxing库提供的方法,将用户输入的网址转化为二维码图像。首先,创建一个`MultiFormatWriter`对象,然后使用`encode`方法编码数据。接着,通过`BitMatrix`对象和`MatrixToImageConfig`配置,...

    利用JS生成二维码

    总的来说,结合jQuery和相应的插件,生成二维码变得非常简单,这使得在网页开发中实现与二维码相关的交互变得更加便捷。通过理解和掌握这些技术,开发者可以提升网站的功能性和用户体验,特别是在移动设备上,二维码...

    JS生成二维码

    在IT行业中,JavaScript(简称JS)是一种广泛使用的前端编程语言,它不仅用于网页交互,还可以实现许多实用功能,如生成二维码。本篇文章将深入探讨如何使用JavaScript生成二维码,以及如何确保这种生成的二维码在...

    iReport生成二维码的案例

    在这个"iReport生成二维码的案例"中,我们将深入探讨如何利用iReport来生成二维码,这在现代信息化系统中是非常实用的一项功能,比如用于追踪、信息传递或作为移动应用的入口。 首先,我们需要了解二维码(Quick ...

    易语言生成二维码模块源码

    在本资源中,我们讨论的是一个用于生成二维码的模块源码,这对于那些需要在易语言项目中集成二维码生成功能的开发者来说,是一个非常实用的工具。 二维码(Quick Response Code)是一种二维条形码,能够存储比传统...

    luaQrcode lua语言生成二维码

    总之,luaQrcode为Lua开发者提供了一种方便的途径来生成二维码,使得在各种项目中集成二维码功能变得简单易行。无论是在移动应用、物联网设备,还是其他需要快速传递信息的场合,luaQrcode都能发挥其作用。

    pb生成二维码

    在标题提到的“pb生成二维码”中,我们将探讨如何利用PowerBuilder实现二维码的生成,并将其保存为图片。 二维码(Quick Response Code)是一种二维条码,可以存储大量的信息,如文本、URL、联系人信息等。在移动...

    python批量生成二维码工具

    添加数据后,我们调用`make`方法生成二维码图像,并将其保存为PNG文件。 对于批量生成二维码,你可以将这个过程封装到一个函数中,然后循环遍历你需要编码的所有数据。例如,如果你有一个包含多个URL的列表,你可以...

    ThinkPHP整合phpqrcode生成二维码DEMO

    在IT行业中,生成二维码是一种常见的数据编码方式,它能够将大量信息浓缩成一个小型的图形,便于手机扫描和数据传输。本示例是关于如何在ThinkPHP框架中整合phpqrcode库来生成二维码的DEMO。这个过程涉及到前端与...

    powerbuilder9.0生成二维码动态库与例子.zip

    4. 示例代码:压缩包中的例子可能包含一个简单的 PowerBuilder 应用程序,展示了如何在PB环境中调用DLL生成二维码。代码中会有关键的调用函数,比如 `CreateQRCode`,以及如何设置和获取数据的示例。 5. 自定义数据...

Global site tag (gtag.js) - Google Analytics