[Spring MVC 프로젝트] - QR코드 만들기

J_m2n·2023년 9월 5일
0
post-custom-banner

> 개발환경

  • Spring MVC Project
  • Eclipse 4.28
  • jdk 11
  • MySQL

현재 진행중인 최종프로젝트에 예약 기능이 있어서 예약금 결제 완료 시 예약 정보가 담긴 QR코드를 생성해야 했다.

그래서 구글의 QR코드 API 사용법을 가져와봤다.




우선 pom.xml에 이 두 개의 의존성을 추가해준다.(Maven 기준)
<dependency>
		    <groupId>com.google.zxing</groupId>
		    <artifactId>core</artifactId>
		    <version>3.5.2</version>
		</dependency>
		<dependency>
		    <groupId>com.google.zxing</groupId>
		    <artifactId>javase</artifactId>
		    <version>3.5.2</version>
		</dependency>

의존성을 추가했으면 뭘 해야한다? Maven Update를 해야한다~



String payInfo = 예약 정보(결제정보);
String fileName = 설정할 이름 + ".png";
  • payInfo는 QR코드에 들어갈 결제 정보 문자열이다.
    꼭 String이여야 하는 것 같다.

  • fileName은 QR코드 이미지 파일의 저장 이름이다.


int width = 300;
int height = 300;
  • width와 height는 QR코드의 사이즈를 설정하는 변수이다.


BitMatrix bitMatrix = new QRCodeWriter().encode(payInfo,BarcodeFormat.QR_CODE,width,height);
  • encode()안에 결제정보, 사이즈 값을 넣는다.


BufferedImage qrImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            for (int x = 0; x < width; x++) {
                for (int y = 0; y < height; y++) {
                    qrImage.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
                }
  • setRGB를 통해 QR코드의 색상도 변경할 수 있다고 한다.
    하지만 난 그냥 기본적인 검은색, 흰색 QR로 만듦


File qrFile = new File(저장 경로 + fileName);
ImageIO.write(qrImage, "png", qrFile);
  • 저장경로와 파일명을 삽입한다. (저장경로의 마지막 폴더에도 /를 붙여줘야함!!)
  • ImageIO.write(qr이미지객체, 파일형태, 저장경로)를 입력한다.


try {
        BitMatrix bitMatrix = new QRCodeWriter().encode(payInfo,BarcodeFormat.QR_CODE,width,height);
        BufferedImage qrImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                qrImage.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
            }
        }
        File qrFile = new File(저장 경로 + fileName);
        ImageIO.write(qrImage, "png", qrFile);
    } catch (Exception e) {
        e.printStackTrace();
    }


이렇게 하면 내가 지정한 경로에 해당 QR코드 이미지가 저장된다.
profile
코딩 초짜입니다
post-custom-banner

0개의 댓글