Java使用Zxing包制作二维码Word文档格式.docx
- 文档编号:18971845
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:12
- 大小:17.04KB
Java使用Zxing包制作二维码Word文档格式.docx
《Java使用Zxing包制作二维码Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java使用Zxing包制作二维码Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
importjava.io.File;
importjava.io.OutputStream;
importjava.io.IOException;
importjava.awt.image.BufferedImage;
publicfinalclassMatrixToImageWriter{
privatestaticfinalintBLACK=0xFF000000;
privatestaticfinalintWHITE=0xFFFFFFFF;
privateMatrixToImageWriter(){}
publicstaticBufferedImagetoBufferedImage(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)
ImageIO.write(image,format,stream)){
+format);
}
}1.3编写生成二维码的实现代码//www.hake.cc
importjava.util.Hashtable;
importcom.google.zxing.BarcodeFormat;
importcom.google.zxing.EncodeHintType;
importcom.google.zxing.MultiFormatWriter;
publicclassTestEncode{
publicstaticvoidmain(String[]args)throwsException{
Stringtext="
你好"
;
intwidth=100;
intheight=100;
Stringformat="
png"
Hashtablehints=newHashtable();
hints.put(EncodeHintType.CHARACTER_SET,"
UTF-8"
);
BitMatrixbitMatrix=newMultiFormatWriter().encode(text,BarcodeFormat.QR_CODE,width,height,hints);
FileoutputFile=newFile("
d:
//new.png"
MatrixToImageWriter.writeToFile(bitMatrix,format,outputFile);
}现在运行后即可生成一张二维码图片,是不是很简单啊?
接下来我们看看如何解析二维码
2、二维码的解析
2.1将core.jar包加入到classpath下。
2.2和生成一样,我们需要一个辅助类(BufferedImageLuminanceSource),同样该类Google也提供了,这里我同样将该类的源码贴出来,可以直接拷贝使用个,省去查找的麻烦
importcom.google.zxing.LuminanceSource;
importjava.awt.Graphics2D;
importjava.awt.geom.AffineTransform;
publicfinalclassBufferedImageLuminanceSourceextendsLuminanceSource{
privatefinalBufferedImageimage;
privatefinalintleft;
privatefinalinttop;
publicBufferedImageLuminanceSource(BufferedImageimage){
this(image,0,0,image.getWidth(),image.getHeight());
publicBufferedImageLuminanceSource(BufferedImageimage,intleft,inttop,intwidth,intheight){
super(width,height);
intsourceWidth=image.getWidth();
intsourceHeight=image.getHeight();
if(left+width>
sourceWidth||top+height>
sourceHeight){
thrownewIllegalArgumentException("
Croprectangledoesnotfitwithinimagedata."
for(inty=top;
top+height;
for(intx=left;
left+width;
if((image.getRGB(x,y)&
0xFF000000)==0){
image.setRGB(x,y,0xFFFFFFFF);
//=white
this.image=newBufferedImage(sourceWidth,sourceHeight,BufferedImage.TYPE_BYTE_GRAY);
this.image.getGraphics().drawImage(image,0,0,null);
this.left=left;
this.top=top;
@Override
publicbyte[]getRow(inty,byte[]row){
if(y<
0||y>
=getHeight()){
Requestedrowisoutsidetheimage:
"
+y);
intwidth=getWidth();
if(row==null||row.length<
width){
row=newbyte[width];
image.getRaster().getDataElements(left,top+y,width,1,row);
returnrow;
publicbyte[]getMatrix(){
intheight=getHeight();
intarea=width*height;
byte[]matrix=newbyte[area];
image.getRaster().getDataElements(left,top,width,height,matrix);
returnmatrix;
publicbooleanisCropSupported(){
returntrue;
publicLuminanceSourcecrop(intleft,inttop,intwidth,intheight){
returnnewBufferedImageLuminanceSource(image,this.left+left,this.top+top,width,height);
publicbooleanisRotateSupported(){
publicLuminanceSourcerotateCounterClockwise(){
AffineTransformtransform=newAffineTransform(0.0,-1.0,1.0,0.0,0.0,sourceWidth);
BufferedImagerotatedImage=newBufferedImage(sourceHeight,sourceWidth,BufferedImage.TYPE_BYTE_GRAY);
Graphics2Dg=rotatedImage.createGraphics();
g.drawImage(image,transform,null);
g.dispose();
returnnewBufferedImageLuminanceSource(rotatedImage,top,sourceWidth-(left+width),getHeight(),width);
@Override
BufferedImagerotatedImage=newBufferedImage(sourceHeight,sourceWidth,BufferedIm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 使用 Zxing 制作 二维码