회사에서 운영업무를 하면서 유저들어게 QR 코드를 발급하여 통역기를 대여하는 서비스를 개발하게 되었다.

QR 코드를 생성하는 방법은 간단하고 여러가지가 있다.

API를 통해 QR을 생성할 수도 있고 라이브러리를 사용해서 생성 할 수도 있다.

보통 API를 사용한 경우가 많으나 버전업 될때 갑자기 생성이 안되는 경우

,deprecated 된 경우가 있어서 안전하게 후자의 방법으로 QR 생성하는 방법을 살펴보겠다.



Javascript로 생성하는 방법

  • 이곳에 가서 먼저 qrcode.js를 다운받는다

  • 뷰페이지에 해당 코드를 넣으면 완성

 <div style="border: 2px solid #000;width:500px">
	 <div id="qrcode"></div>
 </div>
 
<script src="경로/qrcode.js"></script>

var qrcode = new QRCode(document.getElementById("qrcode"), {
 text: "QR리더기로 읽을때 표시될 문자. url이 될수도 있다",
 width: 300,  //가로
 height: 300, //세로
 colorDark : "#000000", //qr에서 어두운 색 (보통 검은색) 
 colorLight : "#ffffff", //qr에서 밝은 색 (보통 하얀색) colorDark 보다 옅어야한다.
 correctLevel : QRCode.CorrectLevel.H //qr코드 오류복원능력임 (L->M->Q->H)
 });

QR코드는 코드의 손상에도 코드 자체에 데이터를 복원하는 기능이 있다.

4단계가 있으며 레벨을 올리게 되면 복원 능력은 향상되지만 이미지 크기가 커진다.

자세한 사항은 요기 를 참조하자.

무엇일까요? qr



JAVA 로 생성하는 방법

zxing 라이브러리는 자바로 구현된 1차/2차원 바코드 이미지 프로세싱을 다루는 오픈소스다.

  • maven dependency 설정
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>javase</artifactId>
    <version>3.1.0</version>
</dependency>
  • 코드 작성


try {
	  createQRCodeImage("QR내용", 350, 350, 0x00000000, 0xFFFFFFFF);
	} catch (WriterException e) {
	    log....
	} catch (IOException e) {
	    log....
}

public void createQRCodeImage(String text, int width, int height, int qrDarkColor, int qrLightColor)throws WriterException, IOException {
  QRCodeWriter qrCodeWriter = new QRCodeWriter();
  BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height); //텍스트, 바코드 포맷,가로,세로
    
	MatrixToImageConfig config = new MatrixToImageConfig(qrDarkColor , qrLightColor); //진한색, 연한색
	BufferedImage qrImage = MatrixToImageWriter.toBufferedImage(matrix , config);

	File temp =  File.createTempFile(text, ".png"); 
	ImageIO.write(qrImage, "png",temp ); //temp 위치에 qr이 이미지 생성됨. 
	InputStream is = new FileInputStream(temp.getAbsolutePath()); // 인풋 스트림으로 변환(향후 S3로 업로드하기위한 작업)

	//로직처리후 temp.delete() 와 is.close()를 해줘야함.
    }

바코드 포맷은 요기 를 가면 자세히 볼 수 있다.