[개발] 프로그램 지식

[java] qrcode 큐알코드 이미지 생성 코드 흐름

  • -
반응형
## : 개인적인 이해를 위한 주석

public static String qrCode(String path, String fileNm, String url, int width, int height, int qrColor, int backColor) {
	String retVal = "";

	## url이 비어있지않은 경우에만 생성
	if (StringUtil.isNotEmpty(url)) {
		// 생성경로
		if (StringUtil.isNotEmpty(path)) { ## 경로가 비어있지않은 경우, 경로끝에 디렉토리 구분자 추가
			if (!StringUtils.equals(File.separator, StringUtils.right(path, 1))) path = path+File.separator;
		} else { ## 경로가 비어있는 경우, 기본 업로드 경로에 'qr' 폴더를 생성하여 경로로 설정
			path = getUploadPath()+"qr"+File.separator;
		}
		FileUtil.mkDir(path); ## 지정된 path(경로)에 mkDir(make Directory) 디렉토리 생성
		BitMatrix bitMatrix = null;
		MatrixToImageConfig matrixToImageConfig = null;
		try {
			// 파일명
			if (StringUtil.isEmpty(fileNm)) fileNm = System.currentTimeMillis()+""; ## 파일명이 없는 경우 현재 시간을 붙임

			// QR 파일명
			String qrFileNm = fileNm+".png"; ## QR 파일명에 .png를 붙임

			// QR URL주소
			String codeUrl = new String(url.getBytes("UTF-8"), "ISO-8859-1");
			QRCodeWriter qrCodeWriter = new QRCodeWriter(); ## qr코드 작성자 객체 생성

			// QR 여백없애기
			Map<EncodeHintType, Object> hints = new HashMap<>(); ## 인코딩 힌트를 설정하기 위한 맵 객체 생성
			hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); ## 오류 정정 레벨을 'H'로 설정
			hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); ## 문자 인코딩을 UTF-8로 설정
			hints.put(EncodeHintType.MARGIN, 1); ## QR코드의 여백을 1로 설정

			// QR URL/가로/세로
			bitMatrix = qrCodeWriter.encode(codeUrl, BarcodeFormat.QR_CODE, width, height, hints); ## 지정된 URL과 설정된 옵션을 사용하여, BitMatrix객체에 QR코드를 인코딩
			matrixToImageConfig = new MatrixToImageConfig(qrColor, backColor); ## QR코드 이미지의 색상 설정을 위해 MatrixToImageConfig 객체 생성
			BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix, matrixToImageConfig); ## BitMatrix를 BufferedImage로 변환합니다.

			// ImageIO를 사용한 QR 파일 생성
			ImageIO.write(bufferedImage, "png", new File(path+qrFileNm)); ## BufferedImage를 PNG형식의 이미지 파일로 저장합니다.
			retVal = qrFileNm; ## 생성된 QR코드 이미지 파일의 이름을 반환합니다.

		} catch (WriterException | IOException e) {
			logFile("SiiruUtil.qrCode", e);
		}
	}
	return retVal;
}

 

인코딩은 정보를 특정 형식 또는 체계에 따라 변환하는 과정을 말합니다. 데이터를 인코딩하면 해당 데이터를 나타내는 일련의 비트 또는 기호로 변환됩니다. 인코딩은 데이터를 다른 형태나 표현으로 변환하는데 사용되며, 데이터를 전송, 저장 또는 처리하기 위해 필요한 형식으로 변환하는 역할을 합니다. ​

예를 들어, 텍스트 데이터를 전송하기 위해 인코딩을 사용할 수 있습니다. 텍스트는 문자와 문자열로 구성되어 있으며, 각 문자는 컴퓨터에서 숫자로 표현되어야 합니다. 따라서 텍스트 데이터를 전송하기 전에 문자를 숫자로 변환하는 과정이 필요합니다. 이를 텍스트 인코딩이라고 합니다. 대표적인 텍스트 인코딩 방식으로는 ASCII, UTF-8, UTF-16 등이 있습니다. ​

QR 코드의 인코딩은 주어진 데이터를 QR 코드 형식에 맞게 변환하는 과정을 의미합니다. 일련의 데이터, 예를 들어 URL, 텍스트, 숫자 등을 QR 코드의 특정 형식에 따라 이진 형태로 변환합니다. QR 코드 인코딩은 데이터를 QR 코드로 표현할 수 있는 비트나 바이트 시퀀스로 변환하는 것을 의미합니다. ​

QR 코드의 인코딩 과정에서는 데이터의 문자 인코딩, 오류 정정, 포맷 정보 등을 고려하여 데이터를 비트로 변환합니다. 이렇게 인코딩된 비트는 QR 코드의 특정 셀에 대응되는 검은색 또는 흰색으로 표시됩니다. QR 코드 리더기는 이러한 셀의 패턴을 해석하여 데이터를 추출합니다. ​

요약하면, 인코딩은 데이터를 특정 형식 또는 체계에 맞게 변환하는 과정을 의미하며, QR 코드 인코딩은 데이터를 QR 코드 형식에 맞게 이진 형태로 변환하는 과정을 말합니다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.