package com.wxthtf.iot.common;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import org.apache.log4j.Logger;
import com.swetake.util.Qrcode;
import java.io.*;
import jp.sourceforge.qrcode.QRCodeDecoder;
import jp.sourceforge.qrcode.data.QRCodeImage;
/**
* <li>Title: TwoDivCodeGenerator.java</li>
* <li>Project: AnyIOT</li>
* <li>Package: com.wxthtf.test</li>
* <li>Description: </li>
* <li>Copyright: Copyright (c) 2012</li>
* <li>Company: wxthtf Technologies </li>
* <li>Created on Feb 10, 2012 8:41:06 AM</li>
*
* @author chun_chang
* @version 1.0.0.0
*
*/
public class TwoDivCodeGenerator{
private static String code = "UTF-8";
private static final Logger log = Logger.getLogger(TwoDivCodeGenerator.class);
/**
* 描述:imgGenerate
* @param srcStr
* @param imgName 全文件名,如C:\\aaa.png
* @param widths
* @param heights
* @return
* @CreateOn Feb 10, 2012 9:37:56 AM
* @author chun_chang
*/
public static boolean imgGenerate(String srcStr, String imgName) {
try {
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeErrorCorrect('H');//LMQH
qrcode.setQrcodeEncodeMode('B');
qrcode.setQrcodeVersion(0);//0-15
byte[] d = srcStr.getBytes(code);
boolean[][] b = qrcode.calQrcode(d);
int widths = b.length * 3 + 4;
int heights = b.length * 3 + 4;
BufferedImage bi = new BufferedImage(widths, heights, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
g.setBackground(Color.WHITE);
g.setColor(Color.BLACK);
g.clearRect(0, 0, widths, heights);
if(d.length > 0 && d.length < 1000) {
for(int i = 0; i < b.length; i++) {
for(int j = 0; j < b.length; j++) {
if(b[j][i]) {
g.fillRect(j * 3 + 2, i * 3 + 2, 3, 3);
}
}
}
} else {
log.error("二维码字符串过长");
}
g.dispose();
bi.flush();
String imgType = imgName.substring(imgName.lastIndexOf('.') + 1, imgName.length());
File f = new File(imgName);
ImageIO.write(bi, imgType, f);
return true;
} catch(Exception e) {
log.error(e, e);
return false;
}
}
public static String decoderImg(String fileName) {
QRCodeDecoder decoder = new QRCodeDecoder();
File imageFile = new File(fileName);
BufferedImage image = null;
String str = "";
try {
image = ImageIO.read(imageFile);
str = new String(decoder.decode(new J2SEImage(image)), code);
} catch(Exception e) {
e.printStackTrace();
}
return str;
}
public static void main(String[] args) throws Exception {
String testString = "清华同方";
String fileName = "C:\\123.png";
TwoDivCodeGenerator.imgGenerate(testString, fileName);
String str = TwoDivCodeGenerator.decoderImg(fileName);
System.out.println(str);
}
}
class J2SEImage implements QRCodeImage{
BufferedImage image;
public J2SEImage(BufferedImage image){
this.image = image;
}
public int getWidth() {
return image.getWidth();
}
public int getHeight() {
return image.getHeight();
}
public int getPixel(int x, int y) {
return image.getRGB(x, y);
}
}
相关推荐
Java二维码生成工具是一种基于Java编程语言的实用程序,它能够帮助开发者创建二维码图像,以便在各种应用场景中使用,如信息传递、网址链接、名片交换等。二维码作为一种高效的数据编码方式,已经广泛应用于现代生活...
Java二维码生成技术是一种在软件开发中常用的功能,它允许我们将数据编码成二维图像,以便于快速扫描和读取。Qrcode(二维码)是日本Denso Wave公司发明的一种矩阵式条形码,相比于传统的条形码,它能存储更多的数据...
本主题聚焦于"JS和Java二维码生成",我们将会深入探讨这两种编程语言如何实现二维码的创建。 首先,让我们从JavaScript(JS)开始。JS是一种轻量级的解释型编程语言,通常用于网页的客户端脚本,它可以让网页具有...
Java二维码生成插件是一种在Java平台上用于快速生成二维码(Qrcode)的工具。这个插件,如`Qrcode_swetake.jar`所示,提供了一种简单高效的方式来创建二维码图像,适用于各种应用场景,如数据编码、链接分享、产品...
Java二维码技术是软件开发中的一种常见应用,它主要用于数据编码,可以将大量信息(如网址、文本、联系人信息等)编码成一个图形化的二维码,方便用户通过手机或其他设备扫描读取。本项目是一个完整的Java二维码生成...
Java二维码生成器是一种工具,它允许开发者通过编程方式在Java应用程序中创建二维码图像。二维码,全称为Quick Response Code,是一种二维条形码,能够存储大量的数据,如文本、URL、联系信息等,并且可以通过智能...
总的来说,生成带有中间logo的Java二维码涉及图像处理、位图操作以及二维码编码技术。开发者需要熟悉Java图像库,理解二维码编码原理,以及如何有效地合并图像。这两个库都提供了丰富的选项来定制二维码的外观和性能...
本篇文章将围绕“Java 二维码相关Jar”这一主题展开讨论,详细介绍如何使用Java进行二维码的生成与解析,并推荐几个常用的Java二维码处理库。 #### 二、二维码基础知识 二维码是一种二维条形码,能够在水平和垂直...
Java二维码工具类是一种用于生成和解析二维码的编程资源,它扩展了二维码的使用,使其能够包含自定义图像,如LOGO。在这个特定的案例中,我们有一个强大的工具类,能够将LOGO集成到二维码的中心,增加了二维码的视觉...
Java 二维码生成是一个常见的编程需求,特别是在移动互联网和物联网领域,二维码被广泛用于信息传递、链接跳转等场景。这个“java 二维码生成带码包含架包”应该是一个包含完整功能的Java库,用于创建二维码图像,...
Java二维码工具类与jar包是开发中经常使用的资源,尤其在移动互联网时代,二维码作为数据交换的快捷方式,被广泛应用在各种场景。本资源提供了一个便捷的Java二维码生成和解析工具,结合相应的jar包,可以帮助开发者...
Java二维码生成Demo是一种在Java编程环境中创建二维码图像的示例代码。二维码,全称为“Quick Response Code”,是一种二维条码,能存储大量的信息,如文本、URL、联系人信息等,广泛应用于移动支付、产品追溯等领域...
Java 二维码生成与解析是Java开发中常见的功能需求,尤其在移动互联网时代,二维码被广泛应用于数据交换、链接跳转、支付凭证等场景。本文将详细介绍如何使用Google的ZXing库来实现Java环境下的二维码生成与解析。 ...
Java二维码工具jar包
以下是一些关于Java二维码生成与解析的关键知识点: 1. **依赖库**: - `QRCode.jar`:这是用于生成和解码二维码的库,它可能包含了`jp.sourceforge.qrcode`和`com.swetake.util.Qrcode`这两个包,这两个包提供了...
QRCodeUtils使用文档详见博客https://blog.csdn.net/qq_24091555/article/details/81263472
java二维码制作jar包
Java二维码生成技术是一种在Java编程环境中创建二维码图像的方法,它允许开发者将文本、链接或者其他数据编码成二维图形,便于手机扫描。在这个“java二维码生成Demo”中,我们可能看到一个简单的示例,演示如何利用...