導航:首頁 > 編程語言 > 二維碼java

二維碼java

發布時間:2022-01-30 22:28:44

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版本)的,能提供些嗎

可以考慮使用圖形繪制來解決二維碼的生成問題,使用實例如下:

生成二維碼
packagenet.qrcode;

importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;
importjava.io.OutputStream;

importjavax.imageio.ImageIO;

importcom.google.zxing.common.BitMatrix;

{

//私有不可更改的變數:生成二維碼圖片的顏色
privatestaticfinalintBLACK=0xFF000000;
privatestaticfinalintWHITE=0xFFFFFFFF;
//空的構造方法
publicMartixToImageWriter(){
//TODOAuto-generatedconstructorstub
}
/**
*靜態方法
*BufferedImage是Image的一個子類,BufferedImage生成的圖片在內存里有一個圖像緩沖區,利用這個緩沖區我們可以很方便的操作這個圖片,
*通常用來做圖片修改操作如大小變換、圖片變灰、設置圖片透明或不透明等。
*@parammatrix編碼形式
*@return
*/
(BitMatrixmatrix)
{
//圖片的寬度和高度
intwidth=matrix.getWidth();
intheight=matrix.getHeight();
//BufferedImage.TYPE_INT_RGB將圖片變為什麼顏色
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;
}
/**
*靜態方法用於生成圖片
*@parammatrix編碼形式
*@paramformat圖片類型
*@paramfile文件(圖片路徑,圖片名稱)
*@throwsIOException
*/
publicstaticvoidwriteToFile(BitMatrixmatrix,Stringformat,Filefile)throwsIOException
{
BufferedImageimage=toBufferedImage(matrix);
if(!ImageIO.write(image,format,file))
{
thrownewIOException("Couldnotwriteanimageofformat"+format+"to"+file);
}
}
/**
*輸出
*@parammatrix
*@paramformat
*@paramstream
*@throwsIOException
*/
publicstaticvoidwriteToStream(BitMatrixmatrix,Stringformat,OutputStreamstream)throwsIOException
{
BufferedImageimage=toBufferedImage(matrix);
if(!ImageIO.write(image,format,stream))
{
thrownewIOException("Couldnotwriteanimageofformat"+format);
}
}
}

測試二維碼是否生成成功
packagenet.qrcode;

importjava.io.File;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;

importcom.google.zxing.BarcodeFormat;
importcom.google.zxing.EncodeHintType;
importcom.google.zxing.MultiFormatWriter;
importcom.google.zxing.common.BitMatrix;

publicclassTwoDimensionCode{

publicstaticvoidmain(String[]args){
try
{
System.out.println("請輸入您要生成二維碼的信息");
Scannerinput=newScanner(System.in);
Stringcontent=input.next();
Stringpath="C:\Users\Administrator\Desktop\二維碼圖片庫";
=newMultiFormatWriter();
Maphints=newHashMap();
hints.put(EncodeHintType.CHARACTER_SET,"UTF-8");
//按照指定的寬度,高度和附加參數對字元串進行編碼
//生成二維碼
BitMatrixbitMatrix=multiFormatWrite.encode(content,BarcodeFormat.QR_CODE,400,400,hints);
Filefile1=newFile(path,userId+".jpg");
//寫入文件
MartixToImageWriter.writeToFile(bitMatrix,"jpg",file1);
System.out.println("二維碼圖片生成成功!");
}
catch(Exceptione)
{
e.printStackTrace();
}
}
}

⑶ java怎麼生成二維碼

1: 使用SwetakeQRCode在Java項目中生成二維碼
這個是日本人寫的,生成的是我們常見的方形的二維碼
可以用中文

2: 使用BarCode4j生成條形碼和二維碼
barcode4j是使用datamatrix的二維碼生成演算法,為支持qr的演算法
datamatrix是歐美的標准,qr為日本的標准,
barcode4j一般生成出來是長方形的
3:zxing
zxing 這個是google的

⑷ 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 生成二維碼後如何給該二維碼添加信息

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生成二維碼

packagecommon;

importjava.awt.Color;
importjava.awt.Graphics2D;
importjava.awt.Image;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;
importjava.util.HashMap;
importjava.util.Map;

importjavax.imageio.ImageIO;

importjp.sourceforge.qrcode.QRCodeDecoder;
importjp.sourceforge.qrcode.exception.DecodingFailedException;

importcom.google.zxing.BarcodeFormat;
importcom.google.zxing.Binarizer;
importcom.google.zxing.BinaryBitmap;
importcom.google.zxing.EncodeHintType;
importcom.google.zxing.LuminanceSource;
importcom.google.zxing.MultiFormatReader;
importcom.google.zxing.MultiFormatWriter;
importcom.google.zxing.NotFoundException;
importcom.google.zxing.WriterException;
importcom.google.zxing.common.BitMatrix;
importcom.google.zxing.common.HybridBinarizer;
importcom.swetake.util.Qrcode;

/**
*二維碼生成工具類
*@authorCloud
*@data2016-12-15
*QRCode
*/

publicclassQRCodeUtil{

//二維碼顏色
privatestaticfinalintBLACK=0xFF000000;
//二維碼顏色
privatestaticfinalintWHITE=0xFFFFFFFF;

/**
*<spanstyle="font-size:18px;font-weight:blod;">ZXing方式生成二維碼</span>
*@paramtext<ahref="javascript:void();">二維碼內容</a>
*@paramwidth二維碼寬
*@paramheight二維碼高
*@paramoutPutPath二維碼生成保存路徑
*@paramimageType二維碼生成格式
*/
(Stringtext,intwidth,intheight,StringoutPutPath,StringimageType){
Map<EncodeHintType,String>his=newHashMap<EncodeHintType,String>();
//設置編碼字元集
his.put(EncodeHintType.CHARACTER_SET,"utf-8");
try{
//1、生成二維碼
BitMatrixencode=newMultiFormatWriter().encode(text,BarcodeFormat.QR_CODE,width,height,his);

//2、獲取二維碼寬高
intcodeWidth=encode.getWidth();
intcodeHeight=encode.getHeight();

//3、將二維碼放入緩沖流
BufferedImageimage=newBufferedImage(codeWidth,codeHeight,BufferedImage.TYPE_INT_RGB);
for(inti=0;i<codeWidth;i++){
for(intj=0;j<codeHeight;j++){
//4、循環將二維碼內容定入圖片
image.setRGB(i,j,encode.get(i,j)?BLACK:WHITE);
}
}
FileoutPutImage=newFile(outPutPath);
//如果圖片不存在創建圖片
if(!outPutImage.exists())
outPutImage.createNewFile();
//5、將二維碼寫入圖片
ImageIO.write(image,imageType,outPutImage);
}catch(WriterExceptione){
e.printStackTrace();
System.out.println("二維碼生成失敗");
}catch(IOExceptione){
e.printStackTrace();
System.out.println("生成二維碼圖片失敗");
}
}

/**
*<spanstyle="font-size:18px;font-weight:blod;">二維碼解析</span>
*@paramanalyzePath二維碼路徑
*@return
*@throwsIOException
*/
@SuppressWarnings({"rawtypes","unchecked"})
(StringanalyzePath)throwsException{
MultiFormatReaderformatReader=newMultiFormatReader();
Objectresult=null;
try{
Filefile=newFile(analyzePath);
if(!file.exists())
{
return"二維碼不存在";
}
BufferedImageimage=ImageIO.read(file);
LuminanceSourcesource=newLuminanceSourceUtil(image);
Binarizerbinarizer=newHybridBinarizer(source);
BinaryBitmapbinaryBitmap=newBinaryBitmap(binarizer);
Maphints=newHashMap();
hints.put(EncodeHintType.CHARACTER_SET,"UTF-8");
result=formatReader.decode(binaryBitmap,hints);
}catch(NotFoundExceptione){
e.printStackTrace();
}
returnresult;
}

/**
*<spanstyle="font-size:18px;font-weight:blod;">QRCode方式生成二維碼</span>
*@paramcontent二維碼內容
*@paramimgPath二維碼生成路徑
*@paramversion二維碼版本
*@paramisFlag是否生成Logo圖片為NULL不生成
*/
publicstaticvoidQRCodeCreate(Stringcontent,StringimgPath,intversion,StringlogoPath){
try{
QrcodeqrcodeHandler=newQrcode();
//設置二維碼排錯率,可選L(7%)M(15%)Q(25%)H(30%),排錯率越高可存儲的信息越少,但對二維碼清晰度的要求越小
qrcodeHandler.setQrcodeErrorCorrect('M');
//N代表數字,A代表字元a-Z,B代表其他字元
qrcodeHandler.setQrcodeEncodeMode('B');
//版本1為21*21矩陣,版本每增1,二維碼的兩個邊長都增4;所以版本7為45*45的矩陣;最高版本為是40,是177*177的矩陣
qrcodeHandler.setQrcodeVersion(version);
//根據版本計算尺寸
intimgSize=67+12*(version-1);
byte[]contentBytes=content.getBytes("gb2312");
BufferedImagebufImg=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<130){
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,130].");
}
/*判斷是否需要添加logo圖片*/
if(logoPath!=null){
Fileicon=newFile(logoPath);
if(icon.exists()){
intwidth_4=imgSize/4;
intwidth_8=width_4/2;
intheight_4=imgSize/4;
intheight_8=height_4/2;
Imageimg=ImageIO.read(icon);
gs.drawImage(img,width_4+width_8,height_4+height_8,width_4,height_4,null);
gs.dispose();
bufImg.flush();
}else{
System.out.println("Error:login圖片還在在!");
}

}


gs.dispose();
bufImg.flush();
//創建二維碼文件
FileimgFile=newFile(imgPath);
if(!imgFile.exists())
imgFile.createNewFile();
//根據生成圖片獲取圖片
StringimgType=imgPath.substring(imgPath.lastIndexOf(".")+1,imgPath.length());
//生成二維碼QRCode圖片
ImageIO.write(bufImg,imgType,imgFile);
}catch(Exceptione){
e.printStackTrace();
}
}

/**
*<spanstyle="font-size:18px;font-weight:blod;">QRCode二維碼解析</span>
*@paramcodePath二維碼路徑
*@return解析結果
*/
(StringcodePath){
FileimageFile=newFile(codePath);
BufferedImagebufImg=null;
StringdecodedData=null;
try{
if(!imageFile.exists())
return"二維碼不存在";
bufImg=ImageIO.read(imageFile);

QRCodeDecoderdecoder=newQRCodeDecoder();
decodedData=newString(decoder.decode(newImageUtil(bufImg)),"gb2312");
}catch(IOExceptione){
System.out.println("Error:"+e.getMessage());
e.printStackTrace();
}catch(DecodingFailedExceptiondfe){
System.out.println("Error:"+dfe.getMessage());
dfe.printStackTrace();
}
returndecodedData;
}

}


3、最後貼測試代碼:

packagetest;

importjava.awt.image.BufferedImage;
importjava.io.InputStream;
importjava.net.URL;

importjavax.imageio.ImageIO;

importcommon.ImageUtil;
importcommon.QRCodeUtil;

importjp.sourceforge.qrcode.QRCodeDecoder;

/**
*二維碼生成測試類
*@authorCloud
*@data2016-11-21
*QRCodeTest
*/

publicclassQRCodeTest{

publicstaticvoidmain(String[]args)throwsException{
/**
*QRcode二維碼生成測試
*QRCodeUtil.QRCodeCreate("http://blog.csdn.net/u014266877","E://qrcode.jpg",15,"E://icon.png");
*/
/**
*QRcode二維碼解析測試
*StringqrcodeAnalyze=QRCodeUtil.QRCodeAnalyze("E://qrcode.jpg");
*/
/**
*ZXingCode二維碼生成測試
*QRCodeUtil.zxingCodeCreate("http://blog.csdn.net/u014266877",300,300,"E://zxingcode.jpg","jpg");
*/
/**
*ZxingCode二維碼解析
*StringzxingAnalyze=QRCodeUtil.zxingCodeAnalyze("E://zxingcode.jpg").toString();
*/
System.out.println("success");
}
}

⑺ 我已經用java生成了一個二維碼了,怎樣讓掃描二維碼後,讀取到一個word文檔,大神。

不用這么麻煩,直接使用二維碼生成器就行了,只要上傳文檔,自動直接生成二維碼。方便有快捷。

推薦一款目前市面上比較不錯的二維碼生成工具。

上傳完成後保存即可生成二維碼,並且生成的二維碼內容支持隨時修改,原碼不變!

希望對你有幫助!

⑻ 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如何實現二維碼一碼多識

會場的二維碼應該要包含會場id
然後會員掃描二維碼,獲得會場的id,此時會員必須登錄,登錄會員就能獲得會員id,
然後根據會員id和會場id去跟伺服器查詢作為信息

⑽ 怎麼用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,

閱讀全文

與二維碼java相關的資料

熱點內容
prom文件夾 瀏覽:726
不規則土方的演算法 瀏覽:209
tor加密貨幣網站 瀏覽:449
linux轉ansi 瀏覽:736
網站源碼怎麼查 瀏覽:687
高cpu雲伺服器 瀏覽:365
androidwebrtcaecm 瀏覽:981
阿里雲部署java 瀏覽:636
雲是不是就是個大的伺服器 瀏覽:581
如何建立linux日誌管理伺服器 瀏覽:772
悟空頭圖標是什麼APP 瀏覽:555
linuxandroid虛擬機 瀏覽:281
ps李濤pdf 瀏覽:638
linuxfork線程 瀏覽:97
易語言編譯改名 瀏覽:723
阿里伺服器都提供什麼 瀏覽:756
cf打開伺服器接不上怎麼辦 瀏覽:901
linux下more命令 瀏覽:402
des演算法運算位數 瀏覽:375
珠海建行貸款解壓 瀏覽:635