
항상 카카오톡이나 네이버 인증 또는 QR코드를 웹사이트와 연결시켜주는 광고 등을 보면서 궁금증이 많은 저에게 궁금한 호기심이 생겼습니다. 항상 신기해하고, 궁금한 내용이라 QR코드를 어떻게 제작하고, 스프링부트로 QR코드를 구현할 수 있을까 라는 궁금증이 생겨 QR코드에 대해 구글링을 하여 알아보고, 공부를 해본 내용을 정리해보았습니다.

2차원 매트릭스 형태로 이루어진 정보 표시 방법입니다.
QR 코드를 찍어서 직접 웹사이트나 다른 페이지로 연결시켜주는 역할을 하기도 하고, 사용자 정보를 QR 코드에 담아 스캔 후 인증하는 방법으로도 사용합니다.
QR 코드는 공공기관이나 박물관 등 정보 안내에 대한 내용을 전달하기 위해 쓰이기도 합니다.
또는 결제 시스템이나 주문 시스템에도 QR 코드가 쓰입니다.

일상 생활에서 QR 코드가 많이 보이고, 구글링을 조금만 해보아도 QR코드 관련 웹사이트나 어플이 많이 나옵니다.
<QR 코드>
QR 코드 제작에 대한 궁금증을 해결하기 위해서,웹 사이트 주소를 입력하면 QR코드로 변환해주는 프로그램을 만들어 보기러 하였습니다.
개발환경:
<웹 사이트 구상>
1.화면 구상
-> 화면은 매우 간단하게 기능만을 테스트 할 예정이기 때문에 입력창 하나와 버튼을 만들 것입니다.
2. 입력창에 url을 입력하고, 버튼을 누르면 페이지가 이동되면서 중앙에 그 사이트에 대한 qr 코드가 나옵니다.
-QrService-
Object cerateQR(String url) throws WriterException, IOException;
-QrServiceImpl-
@Service
public class QrServiceImpl implements QrService{
@Override
public Object cerateQR(String url) throws WriterException, IOException{
//qr 크기 설정
int width = 200;
int height = 200;
// QR Code - BitMatrix: qr code 정보 생성
BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE,width,height);
try(ByteArrayOutputStream out = new ByteArrayOutputStream();){
MatrixToImageWriter.writeToStream(bitMatrix,"PNG",out);
return out.toByteArray();
}
}
}
@RestController
public class QrController {
private QrServiceImpl qrServiceImpl;
@Autowired
public QrController(QrServiceImpl qrServiceImpl){
this.qrServiceImpl = qrServiceImpl;
}
@GetMapping("/qr")
public Object cerateQR(@RequestParam String url) throws WriterException, IOException {
Object Qr = qrServiceImpl.cerateQR(url);
return ResponseEntity.ok()
.contentType(MediaType.IMAGE_PNG)
.body(Qr);
}
}
부트스트랩 이용
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>QR 코드 만들기</title>
<!-- 부트스트랩 CSS 링크 -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-light">
<div class="container">
<div class="row mt-5 justify-content-center">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">QR 코드 만들기</h5>
</div>
<div class="card-body">
<form action="/qr" method="get">
<div class="input-group mb-3">
<input type="text" class="form-control" name="url" placeholder="URL 입력" required>
<button type="submit" class="btn btn-primary">생성</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@2.9.4/dist/umd/popper.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</body>
</html>
<결과 화면>
1.

2.저의 velog 주소를 입력해보겠습니다.

3. qr코드 확인

잘나오는것을 확인했습니다!!
4. 그럼 핸드폰으로 QR코드를 찍어서 웹 사이트를 들어가 볼까요?

이렇게 카메라로 QR코드를 보면 QR 코드를 인식하여 웹사이트로 바로 이동할 수 있습니다.
5. 성공!

단순 궁금증으로 제작하였지만, 여기서 끝내는 것이 아닌 QR코드로 다양한 기능을 접목시킬 예정입니다 !!!