result = formatReader.decode(binaryBitmap, hints);
} catch (NotFoundException e) {
e.printStackTrace();
}
return result;
}
/**
* span style="font-size:18px;font-weight:blod;"QRCode 方式生成二维码/span
* @param content二维码内容
* @param imgPath二维码生成路径
* @param version二维码版本
* @param isFlag是否生成Logo图片为NULL不生成
*/
public static void QRCodeCreate(String content, String imgPath, int version, String logoPath){
try {
Qrcode qrcodeHandler = new Qrcode();
//设置二维码排错率,可选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);
//根据版本计算尺寸
int imgSize = 67 + 12 * (version - 1) ;
byte[] contentBytes = content.getBytes("gb2312");
BufferedImage 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.length0contentBytes.length130) {
boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
for (int i = 0; icodeOut.length; i++) {
for (int j = 0; jcodeOut.length; j++) {
if (codeOut[j][i]) {
gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);
}
}
}
} else {
System.err.println("QRCode content bytes length = " + contentBytes.length + " not in [ 0,130 ]. ");
}
/* 判断是否需要添加logo图片 */
if(logoPath != null){
File icon = new File(logoPath);
if(icon.exists()){
int width_4 = imgSize / 4;
int width_8 = width_4 / 2;
int height_4 = imgSize / 4;
int height_8 = height_4 / 2;
Image img = 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();
//创建二维码文件
【java二维码代码 java实现二维码】File imgFile = new File(imgPath);
if(!imgFile.exists())
imgFile.createNewFile();
//根据生成图片获取图片
String imgType = imgPath.substring(imgPath.lastIndexOf(".") + 1, imgPath.length());
// 生成二维码QRCode图片
ImageIO.write(bufImg, imgType, imgFile);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* span style="font-size:18px;font-weight:blod;"QRCode二维码解析/span
* @param codePath二维码路径
* @return解析结果
*/
public static String QRCodeAnalyze(String codePath) {
File imageFile = new File(codePath);
BufferedImage bufImg = null;
String decodedData = https://www.04ip.com/post/null;
try {
if(!imageFile.exists())
return "二维码不存在";
bufImg = ImageIO.read(imageFile);
QRCodeDecoder decoder = new QRCodeDecoder();
decodedData = https://www.04ip.com/post/new String(decoder.decode(new ImageUtil(bufImg)),"gb2312");
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
e.printStackTrace();
} catch (DecodingFailedException dfe) {
System.out.println("Error: " + dfe.getMessage());
推荐阅读
- 动作传递猜词游戏,动作传递猜词游戏规则讲解视频
- 如何给ios相册加密码是什么,如何给iphone相册加密
- 电脑快手直播为什么秒退,快手一点直播就闪退
- mysql小于等于怎么写 mysql 小于等于
- 广州邵阳亚马逊erp系统,湖南亚马逊运营中心
- 如何排列excel的名次,excel表中如何排列名次
- 推荐好玩经典赛车游戏手游,好玩的赛车游戏手游
- go语言能用吗 go语言能写什么
- 没才艺的直播什么好卖,没有才艺直播什么