Java制作二维码代码,中间带logo图片,可设置logo大小

来源:互联网 发布:计算分组数据的标准差 编辑:程序博客网 时间:2024/05/16 11:48

public static int createQRCode(String content, String imgPath,String logo) {  

       try {  

           Qrcode qrcodeHandler = new Qrcode();  

           qrcodeHandler.setQrcodeErrorCorrect('M');  

           qrcodeHandler.setQrcodeEncodeMode('B');  

           qrcodeHandler.setQrcodeVersion(7);  

           // System.out.println(content);  

           byte[] contentBytes = content.getBytes("gb2312");  

           //构造一个BufferedImage对象 设置宽、高

           BufferedImage bufImg = new BufferedImage(140, 140, BufferedImage.TYPE_INT_RGB);  

           Graphics2D gs = bufImg.createGraphics();  

           gs.setBackground(Color.WHITE);  

           gs.clearRect(0, 0, 140, 140);  

           // 设定图像颜色 > BLACK  

           gs.setColor(Color.BLACK);  

           // 设置偏移量 不设置可能导致解析出错  

           int pixoff = 2;  

           // 输出内容 > 二维码  

           if (contentBytes.length > 0 && contentBytes.length < 120) {  

               boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);  

               for (int i = 0; i < codeOut.length; i++) {  

                   for (int j = 0; j < codeOut.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,120 ]. ");  

               return -1;

           }  

           Image img = ImageIO.read(new File(logo));//实例化一个Image对象。

           gs.drawImage(img, 44, 55, 49, 30, null);

           gs.dispose();  

           bufImg.flush();  

           // 生成二维码QRCode图片  

           File imgFile = new File(imgPath);  

           ImageIO.write(bufImg, "png", imgFile);  

       }catch (Exception e){  

           e.printStackTrace();  

           return -100;

       }  

       return 0;

   }

//添加轮胎天使的logo

createQRCode("http://www.tireangel.com/android/TireAngelDemo.apk","http://www.tireangel.com/images/qrCode.jpg","http://www.tireangel.com/images/logo.jpg");

2 0