728x90
반응형
QR코드 생성을 위한 라이브러리 추가
pom.xml
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.1.0</version>
</dependency>
Controller.java
@RequestMapping("/getQrcode")
public String getQrcode(Model model) throws Exception {
String img = getQRCodeImage(result.getData().getQrCode(), 200, 200);
model.addAttribute("img", img);
return "qrcode";
}
// QR코드 이미지 생성
public static String getQRCodeImage(String text, int width, int height) throws WriterException, IOException {
QRCodeWriter qrCodeWriter = new QRCodeWriter();
BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);
ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream);
return Base64.getEncoder().encodeToString(pngOutputStream.toByteArray());
}
화면에서 출력시 base64로 보여주면된다.
qrcode.html
<img th:src="@{'data:image/jpeg;base64,'+${img}}">
Base64
데이터를 64진법으로 나타내는 것으로 A-Z,a-z,0-9,/+만을 사용한다.
문자 포맷이 달라서 데이터를 손상시킬 수 있는 시스템간에 안정적으로 전송이 가능하다.
문자 코드에 영향을 받지 않는 공통 ASCII문자열로 바꾸는 인코딩 방식.
사이트에서 Base64 인코딩값을 얻을 수 있다.
<img src="data:image/<이미지확장자>;base64,<data코드>")
728x90
반응형
'Spring' 카테고리의 다른 글
Spring boot thymeleaf 로 Error페이지 처리 (0) | 2022.01.27 |
---|---|
Spring ExceptionHandler & ControllerAdvice (0) | 2022.01.27 |
resilience4j circuit breaker test (with spring boot) (0) | 2021.04.09 |
SpringBoot 외부 프로퍼티 파일로 실행하기 (application.properties) (0) | 2021.01.27 |
Netflix Zuul Gateway Filter (0) | 2021.01.16 |