zoukankan      html  css  js  c++  java
  • 生成二维码

    package com.youngdeer.DbConnect;
    
    import java.awt.BasicStroke;
    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.awt.geom.RoundRectangle2D;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.Hashtable;
    
    import javax.imageio.ImageIO;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    
    public class QrcodeTest {
    	
    	private static final int BLACK = 0xFF000000;//用于设置图案的颜色  
    	
    	private static final int WHITE = 0xFFFFFFFF; //用于背景色  
    
    	public static void main(String args[]){
    		String text = "http://youngdeer.top:8080/apidoc/";
    		int width = 800;
    		int height = 800;
    		String format = "png";
    		Hashtable hints = new Hashtable();
    		hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
    		hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
    		hints.put(EncodeHintType.MARGIN, 2);
    		try {
    			BitMatrix matrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, hints);
    			BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    			for (int x = 0; x < width; x++) {
    				for (int y = 0; y < height; y++) {
    					image.setRGB(x, y, (matrix.get(x, y) ? BLACK : WHITE));
    				}
    			}
    			image = new QrcodeTest().LogoMatrix(image);
    			File file=new File("D:/new.png");//在D盘生成二维码图片
    			ImageIO.write(image, format, file);
    		} catch (Exception e) { 
    			e.printStackTrace();
    		}
    	}
    	
    
        /**
         * 设置 logo 
         * @param matrixImage 源二维码图片
         * @return 返回带有logo的二维码图片
         * @throws IOException
         */ 
         public BufferedImage LogoMatrix(BufferedImage matrixImage) throws IOException{  
             /**
              * 读取二维码图片,并构建绘图对象
              */ 
             Graphics2D g2 = matrixImage.createGraphics();             
             int matrixWidth = matrixImage.getWidth();  
             int matrixHeigh = matrixImage.getHeight();  
                
             /**
              * 读取Logo图片
              */ 
             BufferedImage logo = ImageIO.read(new File("D:/jcptapp.png"));  
       
             //开始绘制图片 
             g2.drawImage(logo,matrixWidth/5*2,matrixHeigh/5*2, matrixWidth/5, matrixHeigh/5, null);//绘制      
             BasicStroke stroke = new BasicStroke(5,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);   
             g2.setStroke(stroke);// 设置笔画对象 
             //指定弧度的圆角矩形 
             RoundRectangle2D.Float round = new RoundRectangle2D.Float(matrixWidth/5*2, matrixHeigh/5*2, matrixWidth/5, matrixHeigh/5,20,20); 
             g2.setColor(Color.white); 
             g2.draw(round);// 绘制圆弧矩形 
    
             //设置logo 有一道灰色边框 
             BasicStroke stroke2 = new BasicStroke(1,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);   
             g2.setStroke(stroke2);// 设置笔画对象 
             RoundRectangle2D.Float round2 = new RoundRectangle2D.Float(matrixWidth/5*2+2, matrixHeigh/5*2+2, matrixWidth/5-4, matrixHeigh/5-4,20,20); 
             g2.setColor(new Color(128,128,128));  
             g2.draw(round2);// 绘制圆弧矩形 
             g2.dispose(); 
             matrixImage.flush() ; 
    
             return matrixImage ;  
    
         } 
    
    }
    

      

  • 相关阅读:
    iOS开发——高级篇——iOS抽屉效果实现原理
    iOS开发——高级篇——FMDB 数据库简单使用
    iOS开发——高级篇——多线程dispatch_apply
    iOS开发——基础篇——get和post请求的区别
    iOS开发——高级篇——线程同步、线程依赖、线程组
    谈谈程序员最讨厌做的事
    iOS开发——高级篇——iOS 项目的目录结构
    iOS开发——高级篇——Runtime实际应用
    程序猿如何“智斗”产品经理
    iOS开发——基础篇——iOS开发 Xcode8中遇到的问题及改动
  • 原文地址:https://www.cnblogs.com/hutton/p/10416709.html
Copyright © 2011-2022 走看看