Estoy buscando una demostración de generación y reconocimiento de códigos QR de programación Java. Espero que el contenido sea más completo.
¿Importar?java.awt.Color;
¿importar?java.awt.Color;
¿Importar?
¿importar?java. awt.Color;
importar?java.awt.Graphics2D;
importar?java.awt.image.BufferedImage;
importar?java.io.Graphics2D ;
¿importar?
importar?java.io.IOException;
importar?java.io.InputStream;
importar?java .io.OutputStream;
importar?javax.imageio.ImageIO;
importar?ImageIO;
importar?jp.sourceforge.qrcode.QRCodeDecoder; p>
p>
¿importar?jp.sourceforge.qrcode.exception.DecodingFailedException;
¿importar?
importar?com.swetake.util.Qrcode; p>
public?class?TwoDimensionCode?{
/**
?*?Generar imagen de código QR (QRCode)
?*?
?*?@param?content
?* Guardar contenido
?*?@param?imgPath
?*imagePath p>
?*/
público?{
this.encoderQRCode(content,?imgPath,?" png",?7);
}
/**
?*?Generar imagen de código QR (QRCode)
?*?
?*?@param ?content p>
?* Contenido de almacenamiento
?*@param?output
?@param?output
?* Flujo de salida
?*/
público?{
this.encoderQRCode(contenido,?salida,?" png",?7);
} p>
/**
?*?Generar imagen de código QR (QRCode)
?*?
?*?@ param?content
?* Guardar contenido
?*?@param?imgPath
?*imagePath
?*?@param ?imgType
?*imageType
?*/
público?{
this.encoderQRCode(content,?imgPath,?imgType ,?7 );
}
/**
?*?Generar imagen de código QR (QRCode)
?*?
?*?@param?content
?* Contenido de almacenamiento
?*@param?output
?@para
m?output
?* Flujo de salida
?*?@param?imgType
?*imageType
?*
público?{
this.encoderQRCode(content,?output,?imgType,?7);
}
/** p>
?*?Generar imagen de código QR (QRCode)
?*?
?*?@param?content
?* Guardar contenido
?*?@param?imgPath
?*imagePath
?*?@param?imgType
?*imageType p>
?*?@param?size
?*Tamaño del código QR
?*
¿público?{
prueba {
BufferedImage?bufImg?=?this.qRCodeCommon(content,?imgType,?size);
File?imgFile?=?new?File(imgPath);
///?Generar código QR Imagen de código QR
ImageIO.write(bufImg,?imgType,?imgFile);
}?{
e.printStackTrace ( );
}
}
}
/**
?*?Generar bidimensional Imagen de código (QRCode)
?*?
?*?@param?content
?* Contenido de almacenamiento
?*@ param?output
?@param?output
?* Flujo de salida
?*?@param?imgType
?*imageType
?*?@param?size
?*Tamaño del código QR
?*
¿público?{
try{
BufferedImage?bufImg?=?this.qRCodeCommon(content,?imgType,?size);
//Generar imagen de código QR QRCode
ImageIO.write(bufImg,?imgType,?output);
}?{
e.printStackTrace();
}
}
}
/**
?*?Método de **** público para generar una imagen de código QR (QRCode)
?*?
?*?@param?content
?* Guardar contenido
?*?@param?imgType
?*imageType
?*?@param?size
?*Tamaño del código QR
?*?@return
?*/
private?BufferedImage?qRCodeCommon(String?content,?String?imgType,?int?size)?{
BufferedImage?bufImg?=?null;
¿intentar?{
p>
Qrcode?qrcodeHandler?=?new?Qrcode();
//Establezca la tasa de error del código QR, puede elegir L(7%), M(15%), Q ( 25%), H (30%), cuanto mayor sea la tasa de error, menos información se podrá almacenar, pero menor será el requisito de claridad del código QR
qrcodeHandler.setQrcodeErrorCorrect('M');
p>qrcodeHandler.setQrcodeEncodeMode('B');
///?Establezca el tamaño del código QR, entre 1 y 40. Cuanto mayor sea el valor, mayor será el tamaño. , y más información se puede almacenar
qrcodeHandler.setQrcodeVersion(size);
///?Obtenga la matriz de bytes del contenido y establezca el formato de codificación
byte[]?contentBytes?=?content. getBytes("utf-8");
///?Tamaño de imagen
int?imgSize?=?67?+? 12?*?(tamaño?-?1);
bufImg?=?new?BufferedImage(imgSize,?imgSize,
BufferedImage.TYPE_INT_RGB);
Graphics2D?gs?=?bufImg. createGraphics() ;
//Establecer el color de fondo
gs.setBackground(Color.WHITE);
gs.clearRect(0,?0,?imgSize,? imgSize);
//Establecer el color de la imagen>?BLACK
gs.setColor(Color.BLACK);
///?Establezca el desplazamiento. No establecer el desplazamiento puede provocar errores de análisis
int?pixoff?=?2;
///?Contenido de salida >?Código QR
if( contentBytes.length?>?0?&&?contentBytes.length?800)?{
booleano[][]?codeOut?=? qrcodeHandler.calQrcode(contentBytes);
for?(int?i?=?0;?i?
for?(int ?j?=?0;?j?
if(codeOut[j][i])?{
gs.fillRect (j?*?3?+?pixoff,?i ?*?3?+?pixoff,?3,?3);
}
}
}
} p>
}
} más?{
throw?new?Exception(" QRCode?content?bytes? ¿longitud?=?")?
+?contentBytes.length?
}
gs.dispose();
bufImg. Flush();
}? {
e.printStackTrace();
}
return?bufImg;
}
/* *? *?Analizar código QR (QRCode)? *?@par
soy?imgPath? *? */?
¿público?{
//?QRCode?
¿Archivo?
Imagen en búfer?bufImg ?=?null;?
Cadena?
intenta{?
bufImg?=?ImageIO.read(imageFile);?
QRCodeDecoder?decoder?=?new?QRCodeDecoder();?
content?=?new?String(decoder.decode(new?TwoDimensionCodeImage(bufImg)),?" utf-8");
}?{
System.out.println("Error: ?")??+?e.getMessage());?
e.printStackTrace ();?
}?{
System.out.println("Error: ?")??+?dfe.getMessage());?
dfe.printStackTrace();?
}?
retorno?
}?
/** *?Parse ¿Código QR? *?@param? *? */?
¿público?{
¿Imagen en búfer?
¿Cadena?
probar{ ? p>
p>
bufImg?=?ImageIO.read(entrada);?
QRCodeDecoder?decoder?=?new?QRCodeDecoder();?
contenido ?=?nuevo? String(decoder.decode(new?TwoDimensionCodeImage(bufImg)),?" utf-8");
}?{
System.out.println( "Error:?" ??+?e.getMessage());?
e.printStackTrace();?
}?{
Sistema .out.println( "Error: ?")??+?dfe.getMessage());?
dfe.printStackTrace();?
}?
¿regresar?
}?
¿público?{
¿Cadena?G:/TDDOWNLOAD/Michael_QRCode.png";?
String?Hola, chicos grandes, chicos, ¡bienvenidos a QRCode! "?+?"\nMyblog?[??]" ?+?"\nEMail?[?sjsky007@gmail.com?]";?
¿Código de dos dimensiones?
handler.encoderQRCode(encoderContent,?imgPath,?" png");?
//?try?{? //? OutputStream?output?=?new?FileOutputStream(imgPath);?
//?handler.encoderQRCode(content,?output);?
//?}
/?{
//?e.printStackTrace();?
//?}?
Sys
tem.out.println("========encoder?success");?
String?decoderContent?=?handler.decoderQRCode(imgPath);?
System.out.println("Los resultados del análisis son los siguientes:");?
System.out.println(decoderContent);?
System.out.println("=== =====decoder?success!!!") ;?
}?
}
El segundo fragmento de código: import?java.awt .image.BufferedImage;?
importar?jp.sourceforge.qrcode.data.QRCodeImage;?
público
público?TwoDimensionCodeImage(BufferedImage?bufImg) ?{
this.bufImg?=?bufImg;?
}?
@Override?{
return?bufImg.getHeight ();?
}?
@Override?{
return?bufImg.getRGB(x,?y);?
}?
@Override?{
return.bufImg.getWidth();?
}
}
}?