[JAVA] zxing 라이브러리를 이용하여 링크로 이동하는 큐알코드(QR CODE) 만들기

2tsumo·2022년 8월 17일
1

java

목록 보기
5/6
post-custom-banner

zxing 라이브러리

구글에서 제공하는 오픈소스로 Zebra Crossing의 약자. QR코드 스캔 애플리케이션의 대다수가 이 애플리케이션을 이용했다고 해도 과언이 아닐정도로 널리 쓰이고 있는 코드다.

https://github.com/zxing/zxing

실습

1. dependency(의존성) 추가

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

2. qrCode.jsp

QR을 만들 url을 입력받는 창

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<body>
    QR CODE
    <form action="/test/qrCode", method="get">
        <input type="text" name="url"/><button type="submit">create</button>
    </form>
</body>

3. Controller

    @RequestMapping(value = {"/qrCode"})
    public Object createQr(@RequestParam String url) throws WriterException, IOException {
        int width = 200;
        int height = 200;
        BitMatrix matrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, width, height);

        try (ByteArrayOutputStream out = new ByteArrayOutputStream();) {
            MatrixToImageWriter.writeToStream(matrix, "PNG", out);
            return ResponseEntity.ok()
                    .contentType(MediaType.IMAGE_PNG)
                    .body(out.toByteArray());
        }
    }

url을 특정 높이와 너비의 BitMatrix 로 생성 한 후, MultiFormatWriter.encode()메소드를 이용한다. 반환되는 객체는 boolean형 2차원 배열로 표현된 바코드(QR코드) 모델로, BitMatrix이다.

MatrixToImageWriter.writeToStream()(QRCode를 저장하지 않고 함수에서 바이트 배열로 반환하려는 경우 다음을 사용할 수 있다. - zxing 라이브러리에서 제공하는 메소드)를 활용해서 이미지로 출력 해 주는 코드이다. QR 코드 이미지를 http 요청에 대한 응답으로 반환하려는 경우. http 응답의 본문에서 바이트 배열을 반환할 수 있다.

4. test

테스트할 url을 넣고 create 버튼을 누르면 아래와 같이 QR code가 새창으로 생성된다.

핸드폰으로 카메라로 확인해보자!

QR code로 잘 링크되어 넘어가는 걸 확인할 수 있다.

reference
https://www.callicoder.com/generate-qr-code-in-java-using-zxing/

profile
👨‍💻
post-custom-banner

0개의 댓글