반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

 

2022.03.11 - [파이썬 패키지/라이브러리&패키지 소개] - 파이썬 주요 라이브러리 정리


업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

이번 시간에는 qrcode와 segno 패키지로 qrcode를 생성하는 방법을 공부해보겠습니다.

 

두 패키지를 모두 학습하는 이유는 qrcode는 png, jpeg, bmp 등의 이미지 형식의 확장자로만 qrcode가 저장되며, 여러 옵션을 선택할 수 있지만 SVG 형태로 저장이 불가능하기 때문입니다. 확대 시에도 이미지가 깨지지 않는 SVG 확장자로 저장하기 위해서는 segno 패키지를 사용하여야 합니다.

 

두 패키지 모두 사용법이 정말 간단하니 아주 쉽게 업무에 적용하실 수 있을거예요!


1. qrcode 라이브러리

 

1) 설치

 

 설치는 pip install qrcode 명령을 cmd 창 혹은 주피터노트북 창에 입력하시면 됩니다.

pip install qrcode

 

 

2) 초간단 사용법

 

 사용법은 매우 간단합니다. 아래의 코드가 qrcode 라이브러리의 거의 전부거든요.

import qrcode

# 데이터 생성
data = "https://www.example.com"
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)

# 데이터 추가
qr.add_data(data)
qr.make(fit=True)

# QR 코드 이미지 생성
img = qr.make_image(fill='black', back_color='white')

# 이미지 파일로 저장
img.save("example_qr.png")

  

보시면 다양한 옵션이 있는데 이 옵션들이 무엇을 의미하는지 하나씩 설명드리겠습니다.

 

[version]

QR 코드의 버전을 지정합니다. 값은 1에서 40 사이여야 하며, 숫자가 높을수록 QR 코드의 크기가 커지고 더 많은 데이터를 저장할 수 있습니다.


[error_correction]

 QR 코드의 오류 보정 수준을 설정합니다. 즉 QR 코드가 더럽혀지거나 손상되었을 때도 원하는 url 페이지로 이동할 수 있게 해주는 수준에 대한 옵션입니다. 다음 네 가지 수준 중 하나를 선택할 수 있습니다.


ERROR_CORRECT_L: 약 7%의 오류를 복구
ERROR_CORRECT_M (기본값): 약 15%의 오류를 복구
ERROR_CORRECT_Q: 약 25%의 오류를 복구
ERROR_CORRECT_H: 약 30%의 오류를 복구

 

참고로 오류 복구 수준이 높아질 수록 Data Size가 커진다고 하지만 제가 테스트 해보니 유의미한 차이는 없었습니다. 또한 ChatGPT에게 오류 복구 수준이 높아지만 훼손된 QR코드가 원하지 않는 url로 이동하는 링크로 복구 해주는 것이 아니냐는 질문에는 그렇지는 않다고 하네요.

 

 

[box_size]

QR 코드의 각 박스(픽셀)의 크기를 지정합니다. 이 값은 생성되는 이미지의 전체 크기에 영향을 미칩니다. 아래는 box_size를 10으로 했을 때와 100으로 했을 때의 크기 차이입니다.


[border]

QR 코드 이미지 주변의 테두리 크기를 박스 단위로 지정합니다. 기본값은 4입니다.

2. segno 라이브러리

 

1) 설치

 

 설치는 pip install qrcode 명령을 cmd 창 혹은 주피터노트북 창에 입력하시면 됩니다.

pip install segno

 

 

2) 초간단 사용법

 

 segno의 사용법은 더 간단합니다.

import segno

# QR 코드 생성
qr = segno.make("https://www.google.com", error='H', version=3)

# SVG 형식으로 저장
qr.save('qr-segno.svg', scale=10)

  

segno 패키지는 크게 make 함수와 save 함수가 있습니다. qrcode 패키지와 마찬가지로 다양한 옵션이 있는데 필요한 옵션들 위주로 각각 무엇을 의미하는지 하나씩 설명드리겠습니다.

 

make 함수의 옵션

 

[error]
QR 코드의 오류 보정 수준을 설정합니다. 가능한 값은 'L', 'M', 'Q', 'H' 입니다. 위에서 배운 qrcode와 동일한 개념이므로 자세한 설명은 생략하겠습니다.


[version]
QR 코드의 버전을 설정합니다. 별도로 설정하지 않으면 기본적으로 segno가 자동으로 적절한 버전을 선택합니다. 마찬가지로 위에서 배운 qrcode와 동일한 개념이므로 자세한 설명은 생략하겠습니다.

 

[micro]
True로 설정하면 마이크로 QR 코드를 생성합니다. 마이크로 QR 코드는 작은 양의 데이터를 위해 최적화된 작은 QR 코드입니다. 제가 테스트 해보니 url 데이터는 담지 못하고 숫자나 문자 정도만 담을 수 있습니다.

 

 

save 함수의 옵션

 

save 함수의 경우에는 위에서 배웠던 box_size 옵션과 비슷하게 scale 옵션을 이용하여 qrcode의 사이즈를 조절할 수 있고, bolder 옵션과 같이 quiet_zone 옵션을 이용하여 여백의 사이즈를 조절할 수 있습니다.

 

[scale]
QR 코드의 크기를 조정합니다. scale 값은 QR 코드의 각 모듈(픽셀)의 크기를 결정합니다. 예를 들어, scale=2는 기본 크기의 두 배 크기로 QR 코드를 생성합니다.

 

[quiet_zone]
QR 코드 주변의 여백(quiet zone)의 크기를 설정합니다. 이 값은 모듈의 수로 지정되며, QR 코드 표준에 따라 기본값은 4입니다.

 

[kind]
저장할 파일의 형식을 지정합니다. 예를 들어, 'png', 'svg', 'eps', 'pdf' 등을 지정할 수 있습니다. 파일 확장자를 통해 자동으로 결정되기도 하지만, 이 옵션을 통해 명시적으로 형식을 지정할 수 있습니다.

 


오늘 준비한 내용은 여기까지입니다.

 

최근 글을 블로그에 소홀해서 글을 많이 올리지 않았는데 좀 더 분발해 보도록 해보겠습니다.

반응형

+ Recent posts