java生产二维码
Ⅰ java 生产二维码报错
你好,你可以参考我的这段代码,记得导入Zxing1.6.jar即可:
public static void main(String[] args) {
String myCodeText = "http://www..com";
String filePath = "d:/testqr/myQR.png";
int size = 125;
String fileType = "png";
File myFile = new File(filePath);
try {
Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<EncodeHintType, ErrorCorrectionLevel>();
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
QRCodeWriter qrCodeWriter = new QRCodeWriter();
BitMatrix byteMatrix = qrCodeWriter.encode(myCodeText,BarcodeFormat.QR_CODE, size, size, hintMap);
int CrunchifyWidth = byteMatrix.getWidth();
BufferedImage image = new BufferedImage(CrunchifyWidth, CrunchifyWidth,
BufferedImage.TYPE_INT_RGB);
image.createGraphics();
Graphics2D graphics = (Graphics2D) image.getGraphics();
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, CrunchifyWidth, CrunchifyWidth);
graphics.setColor(Color.BLACK);
for (int i = 0; i < CrunchifyWidth; i++) {
for (int j = 0; j < CrunchifyWidth; j++) {
if (byteMatrix.get(i, j)) {
graphics.fillRect(i, j, 1, 1);
}
}
}
ImageIO.write(image, fileType, myFile);
} catch (WriterException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("\n\nYou have successfully created QR Code.");
}
记得点赞哦
Ⅱ 我没学过java,现在想用eclipse生成一个二维码,请大家帮忙,最好是每一步都有,谢谢。
需要使用到的jar包:QRCode.jar
1、新建类1。TwoDimensionCode.java
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import jp.sourceforge.qrcode.QRCodeDecoder;
import jp.sourceforge.qrcode.exception.DecodingFailedException;
import com.swetake.util.Qrcode;
public class TwoDimensionCode {
/**
* 二维码图片的尺寸大小
*/
public static int twoDimensionSize = 10;
/**
*生成二维码(QRCode)图片
*@paramcontent存储内容
*@paramimgPath图片路径
*/
public void encoderQRCode(String content,String imgPath){
this.encoderQRCode(content,imgPath,"jpg",twoDimensionSize);
}
/**
*生成二维码(QRCode)图片
*@paramcontent存储内容
*@paramoutput输出流
*/
public void encoderQRCode(String content,OutputStream output){
this.encoderQRCode(content,output,"jpg",twoDimensionSize);
}
/**
*生成二维码(QRCode)图片
*@paramcontent存储内容
*@paramimgPath图片路径
*@paramimgType图片类型
*/
public void encoderQRCode(String content,String imgPath,String imgType){
this.encoderQRCode(content,imgPath,imgType,twoDimensionSize);
}
/**
*生成二维码(QRCode)图片
*@paramcontent存储内容
*@paramoutput输出流
*@paramimgType图片类型
*/
public void encoderQRCode(String content,OutputStream output,String imgType){
this.encoderQRCode(content,output,imgType,twoDimensionSize);
}
/**
*生成二维码(QRCode)图片
*@paramcontent存储内容
*@paramimgPath图片路径
*@paramimgType图片类型
*@paramsize二维码尺寸
*/
public void encoderQRCode(String content,String imgPath,String imgType,int size){
try{
BufferedImage bufImg=this.qRCodeCommon(content,imgType,size);
File imgFile=new File(imgPath);
//生成二维码QRCode图片
ImageIO.write(bufImg,imgType,imgFile);
}catch(Exception e){
e.printStackTrace();
}
}
/**
*生成二维码(QRCode)图片
*@paramcontent存储内容
*@paramoutput输出流
*@paramimgType图片类型
*@paramsize二维码尺寸
*/
public void encoderQRCode(String content,OutputStream output,String imgType,int size){
try{
BufferedImage bufImg = this.qRCodeCommon(content,imgType,size);
//生成二维码QRCode图片
ImageIO.write(bufImg,imgType,output);
}catch(Exception e){
e.printStackTrace();
}
}
/**
*生成二维码(QRCode)图片的公共方法
*@paramcontent存储内容
*@paramimgType图片类型
*@paramsize二维码尺寸
*@return
*/
public BufferedImage qRCodeCommon(String content,String imgType,int size){
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(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=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("QRCodecontentbyteslength="+contentBytes.length+"notin[0,800].");
}
gs.dispose();
bufImg.flush();
}catch(Exception e){
e.printStackTrace();
}
return bufImg;
}
/**
*解析二维码(QRCode)
*@paramimgPath图片路径
*@return
*/
public String decoderQRCode(String imgPath){
//QRCode二维码图片的文件
File imageFile=new File(imgPath);
BufferedImage bufImg=null;
String content=null;
try{
bufImg=ImageIO.read(imageFile);
QRCodeDecoder decoder=new QRCodeDecoder();
content=new String(decoder.decode(new TwoDimensionCodeImage(bufImg)),"utf-8");
}catch(IOException e){
System.out.println("Error:"+e.getMessage());
e.printStackTrace();
}catch(DecodingFailedException dfe){
System.out.println("Error:"+dfe.getMessage());
dfe.printStackTrace();
}
return content;
}
/**
*解析二维码(QRCode)
*@paraminput输入流
*@return
*/
public String decoderQRCode(InputStream input){
BufferedImage bufImg=null;
String content=null;
try{
bufImg=ImageIO.read(input);
QRCodeDecoder decoder=new QRCodeDecoder();
content=new String(decoder.decode(new TwoDimensionCodeImage(bufImg)),"utf-8");
}catch(IOException e){
System.out.println("Error:"+e.getMessage());
e.printStackTrace();
}catch(DecodingFailedException dfe){
System.out.println("Error:"+dfe.getMessage());
dfe.printStackTrace();
}
return content;
}
public static void main(String[]args){
String imgPath="D:/QRCodeTest/Michael_QRCode.jpg";
String encoderContent="Hello大大、小小,welcometoQRCode!"+"\nMyblog[aaa]"+"\nEMail[bbb]";
encoderContent="http://www..com";
TwoDimensionCode handler=new TwoDimensionCode();
TwoDimensionCode.twoDimensionSize=7;
handler.encoderQRCode(encoderContent,imgPath,"jpg");
//try{
//OutputStreamoutput=newFileOutputStream(imgPath);
//handler.encoderQRCode(content,output);
//}catch(Exceptione){
//e.printStackTrace();
//}
System.out.println("========encodersuccess");
String decoderContent=handler.decoderQRCode(imgPath);
System.out.println("解析结果如下:");
System.out.println(decoderContent);
System.out.println("========decodersuccess!!!");
}
}
2、新建类2。
import java.awt.image.BufferedImage;
import jp.sourceforge.qrcode.data.QRCodeImage;
public class TwoDimensionCodeImage implements QRCodeImage{
BufferedImage bufImg;
public TwoDimensionCodeImage(BufferedImage bufImg) {
this.bufImg = bufImg;
}
public int getHeight(){
return bufImg.getHeight();
}
public int getPixel(int x, int y) {
return bufImg.getRGB(x, y);
}
public int getWidth(){
return bufImg.getWidth();
}
}
3、新建servlet的二维码类
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.abchina.plantix.sample.multilist.contract.TwoDimensionCode;
public class PrintTwoBarCodeServlet extends HttpServlet{
/**
* 专门用来生成二维码图片的servlet
*/
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String code = request.getParameter("code");
int size = null==request.getParameter("size")?7:Integer.valueOf(request.getParameter("size").toString());
TwoDimensionCode tdc = new TwoDimensionCode();
BufferedImage image = tdc.qRCodeCommon(code,"jpg",size);
//System.out.print(image.getHeight()+"*"+image.getWidth());
image.flush();
ImageIO.write(image, "jpg", response.getOutputStream());
}
}
4、web.xml里配置servlet
<!-- 以下是二维条码的配置信息 -->
<servlet>
<servlet-name>PrintTwoBarCodeServlet</servlet-name>
<servlet-class>com.abchina.plantix.servlet.PrintTwoBarCodeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PrintTwoBarCodeServlet</servlet-name>
<url-pattern>/servlet/PrintTwoBarCodeServlet</url-pattern>
</servlet-mapping>
5、jsp上调用:
<body>
二维条码:<br><img src="servlet/PrintTwoBarCodeServlet?code=C123456789&size=4"/>
</body>
Ⅲ java 生成二维码后如何给该二维码添加信息
java可使用zxing生成二维码并为其添加信息。
以下是详细步骤:
1、创建MatrixToImageWriter类
importcom.google.zxing.common.BitMatrix;
importjavax.imageio.ImageIO;
importjava.io.File;
importjava.io.OutputStream;
importjava.io.IOException;
importjava.awt.image.BufferedImage;
{
privatestaticfinalintBLACK=0xFF000000;
privatestaticfinalintWHITE=0xFFFFFFFF;
privateMatrixToImageWriter(){}
(BitMatrixmatrix){
intwidth=matrix.getWidth();
intheight=matrix.getHeight();
BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
for(intx=0;x<width;x++){
for(inty=0;y<height;y++){
image.setRGB(x,y,matrix.get(x,y)?BLACK:WHITE);
}
}
returnimage;
}
publicstaticvoidwriteToFile(BitMatrixmatrix,Stringformat,Filefile)
throwsIOException{
BufferedImageimage=toBufferedImage(matrix);
if(!ImageIO.write(image,format,file)){
thrownewIOException("Couldnotwriteanimageofformat"+format+"to"+file);
}
}
publicstaticvoidwriteToStream(BitMatrixmatrix,Stringformat,OutputStreamstream)
throwsIOException{
BufferedImageimage=toBufferedImage(matrix);
if(!ImageIO.write(image,format,stream)){
thrownewIOException("Couldnotwriteanimageofformat"+format);
}
}
}
2、生成二维码并添加信息
importjava.io.File;
importjava.util.Hashtable;
importcom.google.zxing.BarcodeFormat;
importcom.google.zxing.EncodeHintType;
importcom.google.zxing.MultiFormatWriter;
importcom.google.zxing.WriterException;
importcom.google.zxing.common.BitMatrix;
publicclassTest{
/**
*@paramargs
*@throwsException
*/
publicstaticvoidmain(String[]args)throwsException{
Stringtext="http://www..com";
intwidth=300;
intheight=300;
//二维码的图片格式
Stringformat="gif";
Hashtablehints=newHashtable();
//内容所使用编码
hints.put(EncodeHintType.CHARACTER_SET,"utf-8");
BitMatrixbitMatrix=newMultiFormatWriter().encode(text,
BarcodeFormat.QR_CODE,width,height,hints);
//生成二维码
FileoutputFile=newFile("d:"+File.separator+"new.gif");
MatrixToImageWriter.writeToFile(bitMatrix,format,outputFile);
}
}
Ⅳ Java如何用代码生成二维码
引用spire.barcode.jar包
//创建BarcodeSettings对象
BarcodeSettingssettings=newBarcodeSettings();
//设置条码类型为
QR二维码settings.setType(BarCodeType.QR_Code);
//设置二维码数据
settings.setData("Hello123456789");
//设置二维码显示数据
settings.setData2D("Hello123456789");
//设置数据类型
settings.setQRCodeDataMode(QRCodeDataMode.Alpha_Number);
//设置二维码模型宽度
settings.setX(1.0f);
//设置二维码纠错级别settings.setQRCodeECL(QRCodeECL.H);
//创建BarCodeGenerator实例
=newBarCodeGenerator(settings);
//根据settings生成图像数据,保存至BufferedImage
BufferedImagebufferedImage=barCodeGenerator.generateImage();
//将图片数据保存为PNG格式
ImageIO.write(bufferedImage,"png",newFile("QRCode.png"));
Ⅳ java中怎样用代码生成二维码
参考代码
import java.io.*;
import java.util.Date;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
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
}
Ⅵ java批量生成二维码的for循环怎么写
有了二维码生成库(java版),for就很简单了
在网上搜索QRcode.jar,可以参考下面的代码:
/**
*生成二维码(QRCode)图片的公共方法
*@paramcontent存储内容
*@paramimgType图片类型
*"jpg","png"
*@paramsize二维码尺寸
*取值范围1-40,值越大尺寸越大,可存储的信息越大
*@return
*/
(Stringcontent,StringimgType,intsize){
BufferedImagebufImg=null;
try{
QrcodeqrcodeHandler=newQrcode();
//设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
qrcodeHandler.setQrcodeErrorCorrect('M');
qrcodeHandler.setQrcodeEncodeMode('B');
//设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大
qrcodeHandler.setQrcodeVersion(size);
//获得内容的字节数组,设置编码格式
byte[]contentBytes=content.getBytes("utf-8");
//图片尺寸
intimgSize=67+12*(size-1);
bufImg=newBufferedImage(imgSize,imgSize,BufferedImage.TYPE_INT_RGB);
Graphics2Dgs=bufImg.createGraphics();
//设置背景颜色
gs.setBackground(Color.WHITE);
gs.clearRect(0,0,imgSize,imgSize);
//设定图像颜色>BLACK
gs.setColor(Color.BLACK);
//设置偏移量,不设置可能导致解析出错
intpixoff=2;
//输出内容>二维码
if(contentBytes.length>0&&contentBytes.length<800){
boolean[][]codeOut=qrcodeHandler.calQrcode(contentBytes);
for(inti=0;i<codeOut.length;i++){
for(intj=0;j<codeOut.length;j++){
if(codeOut[j][i]){
gs.fillRect(j*3+pixoff,i*3+pixoff,3,3);
}
}
}
}else{
thrownewException("QRCodecontentbyteslength="+contentBytes.length+"notin[0,800].");
}
gs.dispose();
bufImg.flush();
}catch(Exceptione){
e.printStackTrace();
}
returnbufImg;
}
Ⅶ java怎么生成二维码
1: 使用SwetakeQRCode在Java项目中生成二维码
这个是日本人写的,生成的是我们常见的方形内的二维码
可以用中容文
2: 使用BarCode4j生成条形码和二维码
barcode4j是使用datamatrix的二维码生成算法,为支持qr的算法
datamatrix是欧美的标准,qr为日本的标准,
barcode4j一般生成出来是长方形的
3:zxing
zxing 这个是google的
Ⅷ java 如何完成二维码的制作
参考以下代码:
//创建BarcodeSettings实例
BarcodeSettingssettings=newBarcodeSettings();
//设置条码类型为QR二维码
settings.setType(BarCodeType.QR_Code);
//设置二维码数据
settings.setData("Hello123456789");
//设置二维码显示数据
settings.setData2D("Hello123456789");
//设置数据类型
settings.setQRCodeDataMode(QRCodeDataMode.Alpha_Number);
//设置二维码模型宽度
settings.setX(1.0f);
//设置二维码纠错级别
settings.setQRCodeECL(QRCodeECL.H);
//创建BarCodeGenerator实例
=newBarCodeGenerator(settings);
//根据settings生成图像数据,保存至BufferedImage实例
BufferedImagebufferedImage=barCodeGenerator.generateImage();
//保存为PNG图片
ImageIO.write(bufferedImage,"png",newFile("QRCode.png"));
System.out.println("Complete!");
需要引用Spire.Barcode for java
原文:Java 生成二维码
Ⅸ 怎么用java生成一个二维码很简单的那种,不要用到qrcord和zxing库的。
用网上的api,java代码并不复杂
http://apistore..com/apiworks/servicedetail/1017.html
Ⅹ java怎么生成带logo二维码
1、下载生成二维码所需要的jar包qrcode.jar;
2、直接上生成二维码的java代码
//需要导入的包
importjava.awt.Color;
importjava.awt.Graphics2D;
importjava.awt.Image;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjavax.imageio.ImageIO;
importcom.swetake.util.Qrcode;
/**
*生成二维码(QRCode)图片
*@paramcontent二维码图片的内容
*@paramimgPath生成二维码图片完整的路径
*@paramccbpath二维码图片中间的logo路径
*/
publicstaticintcreateQRCode(Stringcontent,StringimgPath,StringccbPath){
try{
QrcodeqrcodeHandler=newQrcode();
qrcodeHandler.setQrcodeErrorCorrect('M');
qrcodeHandler.setQrcodeEncodeMode('B');
qrcodeHandler.setQrcodeVersion(7);
//System.out.println(content);
byte[]contentBytes=content.getBytes("gb2312");
//构造一个BufferedImage对象设置宽、高
BufferedImagebufImg=newBufferedImage(140,140,BufferedImage.TYPE_INT_RGB);
Graphics2Dgs=bufImg.createGraphics();
gs.setBackground(Color.WHITE);
gs.clearRect(0,0,140,140);
//设定图像颜色>BLACK
gs.setColor(Color.BLACK);
//设置偏移量不设置可能导致解析出错
intpixoff=2;
//输出内容>二维码
if(contentBytes.length>0&&contentBytes.length<120){
boolean[][]codeOut=qrcodeHandler.calQrcode(contentBytes);
for(inti=0;i<codeOut.length;i++){
for(intj=0;j<codeOut.length;j++){
if(codeOut[j][i]){
gs.fillRect(j*3+pixoff,i*3+pixoff,3,3);
}
}
}
}else{
System.err.println("QRCodecontentbyteslength="
+contentBytes.length+"notin[0,120].");
return-1;
}
Imageimg=ImageIO.read(newFile(ccbPath));//实例化一个Image对象。
gs.drawImage(img,55,55,30,30,null);
gs.dispose();
bufImg.flush();
//生成二维码QRCode图片
FileimgFile=newFile(imgPath);
ImageIO.write(bufImg,"png",imgFile);
}catch(Exceptione){
e.printStackTrace();
return-100;
}
return0;
}
来自网友孤独青鸟的博客