본문 바로가기

Spring

Spring Boot QR코드 이미지 생성 해서 thymeleaf로 보여주기

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문자열로 바꾸는 인코딩 방식.

 

http://www.base64-image.de/

 

Base64 Image Encoder

show code opens a modal with image preview, usage examples, image width & height, ... copy image copies this base64 code to your clipboard: data:image/jpeg;base64,/9j/4AA... copy css copies this base64 code to your clipboard: url('data:image/jpeg;base64,/9

www.base64-image.de

사이트에서 Base64 인코딩값을 얻을 수 있다.

 

<img src="data:image/<이미지확장자>;base64,<data코드>")

 

728x90
반응형