본문 바로가기
CLASS/SPRINGBOOT

#QR

by hingu 2024. 10. 21.
세팅 방법 !
Maven Repository 

-> 두 개 복사
 
 
 
 
-> build.gradle에 추가
 
 
 
🔽
 
controller생성함ㅎ
 
-> 컨트롤러 내용

- qr_pi.java

package kr.co.kim.qr;

import java.io.ByteArrayOutputStream;

import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;

import lombok.extern.slf4j.Slf4j;

//GOOGLE에서 제공하는 ZXing을 이용하여 QR API를 구축함

@RestController
//@RequiredArgsConstructor	//생성자 주입없이 자동으로 구조를 활성화 시키는 어노테이션
@Slf4j	//오류 사항 및 클래스 실행 시 log기록을 남기는 어노테이션
public class qr_api {
	
	@GetMapping("/qr/naver")
	public ResponseEntity<byte[]> qr_web() throws Exception {	
		int size = 300;	//QR 이미지 사이즈
		
		String url = "http://pensionandlife.webmiwon.co.kr:8084/mweb/index.jsp";	//QR을 출력 시 이동하는 경로
		
		//사이즈, 경로, 패턴형태를 구성으로 이미지화 시키는 작업
		BitMatrix bm = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, size, size);
		
		//BYTE로 이미지를 생성하는 Stream
		ByteArrayOutputStream bs = null;
		try {
			bs = new ByteArrayOutputStream();
			//저장 방식 (생성코드, 생성파일명, 저장형태)
			MatrixToImageWriter.writeToStream(bm, "PNG", bs);
			
		}catch (Exception e) {
			System.out.println("QR 라이브러리 생성 오류 발생!!");
		}
		//해당 이미지를 웹사이트에 바로 출력 (CDN 서버 이미지 출력 형태와 동일함)
		return ResponseEntity.ok().contentType(MediaType.IMAGE_PNG).body(bs.toByteArray());
	}
}