java二維碼生成源碼
A. 怎麼使用java生成DataMatrix格式的二維碼
參考:
import com.spire.barcode.BarCodeGenerator;
import com.spire.barcode.BarCodeType;
import com.spire.barcode.BarcodeSettings;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
public class CreateDataMatrix {
public static void main(String[] args) throws Exception {
//生成BarcodeSettings實例
BarcodeSettings settings = new BarcodeSettings();
//設置條形碼類型為DataMatrix
settings.setType(BarCodeType.Data_Matrix);
//設置條形碼模型寬度
settings.setX(1.5f);
//設置數據和顯示文本
settings.setData("ABC 123456789ABC 123456789ABC 123456789");
settings.setData2D("ABC 123456789ABC 123456789ABC 123456789");
//創建BarCodeGenerator實例
BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);
//根據settings生成圖像數據,保存至BufferedImage實例
BufferedImage bufferedImage = barCodeGenerator.generateImage();
//保存為PNG圖片
ImageIO.write(bufferedImage, "png", new File("DataMatrix.png"));
System.out.println("Complete!");
}
}
用到了spire.barcode for java庫
B. 誰有二維碼生成的源代碼(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();
}
}
}
C. 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
}
D. java怎麼生成二維碼
1: 使用SwetakeQRCode在Java項目中生成二維碼
這個是日本人寫的,生成的是我們常見的方形的二維碼
可以用中文
2: 使用BarCode4j生成條形碼和二維碼
barcode4j是使用datamatrix的二維碼生成演算法,為支持qr的演算法
datamatrix是歐美的標准,qr為日本的標准,
barcode4j一般生成出來是長方形的
3:zxing
zxing 這個是google的
E. 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 生成二維碼
F. 我已經用java生成了一個二維碼了,怎樣讓掃描二維碼後,讀取到一個word文檔,大神。
不用這么麻煩,直接使用二維碼生成器就行了,只要上傳文檔,自動直接生成二維碼。方便有快捷。
推薦一款目前市面上比較不錯的二維碼生成工具。
上傳完成後保存即可生成二維碼,並且生成的二維碼內容支持隨時修改,原碼不變!
希望對你有幫助!
G. 怎麼用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,
H. 如何使用java開發二維碼代碼
1: 使用SwetakeQRCode在Java項目中生成二維碼
http://swetake.com/qr/ 下載地址
或著http://sourceforge.jp/projects/qrcode/downloads/28391/qrcode.zip
這個是日本人寫的,生成的是我們常見的方形的二維碼
可以用中文
如:5677777ghjjjjj
2: 使用BarCode4j生成條形碼和二維碼
BarCode4j網址:http://sourceforge.NET/projects/barcode4j/
barcode4j是使用datamatrix的二維碼生成演算法,為支持qr的演算法
datamatrix是歐美的標准,qr為日本的標准,
barcode4j一般生成出來是長方形的
如:88777alec000yan
這個博客這方面說的挺清楚的:
http://jinshan.iteye.com/blog/1004554
3:zxing
zxing 這個是google的
下載地址
http://code.google.com/p/zxing/downloads/list
Java代碼:
import java.io.File;
import java.util.Hashtable;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
public class QRCodeEvents {
public static void main(String []args)throws Exception{
String text = "你好";
int width = 100;
int height = 100;
String format = "png";
Hashtable hints= new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height,hints);
File outputFile = new File("new.png");
MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile);
}
}
4:google chart api就有實現二維碼的方法
利用這個api,使用google appengine進行實現。
5:JS生成二維碼
使用jQuery-qrcode生成二維碼
先簡單說一下jquery-qrcode,這個開源的三方庫(可以從https://github.com/jeromeetienne/jquery-qrcode 獲取),
qrcode.js 是實現二維碼數據計算的核心類,
jquery.qrcode.js 是把它用jquery方式封裝起來的,用它來實現圖形渲染,其實就是畫圖(支持canvas和table兩種方式)
支持的功能主要有:
Js代碼:
text : "https://github.com/jeromeetienne/jquery-qrcode" //設置二維碼內容
Js代碼:
render : "canvas",//設置渲染方式
width : 256, //設置寬度
height : 256, //設置高度
typeNumber : -1, //計算模式
correctLevel : QRErrorCorrectLevel.H,//糾錯等級
background : "#ffffff",//背景顏色
foreground : "#000000" //前景顏色
使用方式非常簡單
Js代碼:
jQuery('#output').qrcode({width:200,height:200,correctLevel:0,text:content});
經過簡單實踐,
使用canvas方式渲染性能還是非常不錯的,但是如果用table方式,性能不太理想,特別是IE9以下的瀏覽器,所以需要自行優化一下渲染table的方式,這里就不細述了。
其實上面的js有一個小小的缺點,就是默認不支持中文。
這跟js的機制有關系,jquery-qrcode這個庫是採用 charCodeAt() 這個方式進行編碼轉換的,
而這個方法默認會獲取它的 Unicode 編碼,一般的解碼器都是採用UTF-8, ISO-8859-1等方式,
英文是沒有問題,如果是中文,一般情況下Unicode是UTF-16實現,長度2位,而UTF-8編碼是3位,這樣二維碼的編解碼就不匹配了。
解決方式當然是,在二維碼編碼前把字元串轉換成UTF-8,具體代碼如下:
function utf16to8(str) {
var out, i, len, c;
out = "";
len = str.length;
for(i = 0; i < len; i++) {
c = str.charCodeAt(i);
if ((c >= 0x0001) && (c <= 0x007F)) {
out += str.charAt(i);
} else if (c > 0x07FF) {
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
} else {
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
}
return out;
}
I. 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"));