Spring

zxing을 이용하여 QRCode생성하고 저장하기!

iheeeee6-6 2020. 3. 8. 17:57
728x90

1.  먼저 zxing을 사용하기 위해  pom.xml에 추가해준다.

<dependency>
	<groupId>com.google.zxing</groupId>
	<artifactId>javase</artifactId>
	<version>3.1.0</version>
</dependency>

 

 

2.  controller에 아래와 같이 작성한다. 

 아래의 메소드는 QRCode를 생성하고 저장하는 메소드이다. 

@RequestMapping("qr.do") 
public String makeqr(HttpServletRequest request,HttpSession session,String storeName) throws WriterException, IOException { 

	String root = request.getSession().getServletContext().getRealPath("resources"); //현재 서비스가 돌아가고 있는 서블릿 경로의 resources 폴더 찾기

	String savePath = root + "\\qrCodes\\"; // 파일 경로

	//파일 경로가 없으면 생성하기
	File file = new File(savePath); 
	if(!file.exists()) { 
   	 	file.mkdirs(); 
	}  
    
    // 링크로 할 URL주소 
    String url = "localhost:8800/jhpay/enterStore.do?store="+storeName; 
    
     // 링크 생성값
    String codeurl = new String(url.getBytes("UTF-8"), "ISO-8859-1"); 
   
    // QRCode 색상값
    int qrcodeColor =   0xFF2e4e96; 
    // QRCode 배경색상값  
    int backgroundColor = 0xFFFFFFFF; 
         
    //QRCode 생성
    QRCodeWriter qrCodeWriter = new QRCodeWriter();  
    BitMatrix bitMatrix = qrCodeWriter.encode(codeurl, BarcodeFormat.QR_CODE,200, 200);    // 200,200은 width, height
  
    MatrixToImageConfig matrixToImageConfig = new MatrixToImageConfig(qrcodeColor,backgroundColor); 
    BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix,matrixToImageConfig); 
    
    //파일 이름에 저장한 날짜를 포함해주기 위해 date생성
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 
    String fileName=sdf.format(new Date()) +storeName; 
    
    //파일 경로, 파일 이름 , 파일 확장자에 맡는 파일 생성
    File temp =  new File(savePath+fileName+".png");  
    
    // ImageIO를 사용하여 파일쓰기 
    ImageIO.write(bufferedImage, "png",temp); 
	
    //리턴은 사용자가 원하는 값을 리턴한다. 
    //작성자는 QRCode 파일의 이름을 넘겨주고 싶었음.
	return fileName+".png"; 
}

 

 

3. 설정한 경로에 qrcode 파일이 생성되는 것을 확인할 수 있다. ㅎㅎ

 

일부분입니당