파이썬 QR 코드 생성기 만들기: 문자열을 PNG 이미지로 바꾸는 가장 쉬운 방법

파이썬 QR 코드 생성기로 문자열을 PNG 이미지로 저장하는 과정을 설명하는 대표 이미지
문자열 하나를 넣으면 QR 이미지가 바로 나온다

파이썬 QR 코드 생성기는 결과가 바로 보여서 재밌습니다. 문자열 하나만 넣어도 곧바로 이미지 파일이 나오기 때문입니다. 특히 qrcode 패키지는 설치가 간단하고, qrcode.make() 한 줄로도 바로 시작할 수 있습니다.

이 글에서는 아주 짧은 버전부터 시작해서, 문자열이 어떻게 QR 이미지가 되는지, PNG로 저장하고 공유하는 흐름까지 단계별로 정리하겠습니다.


먼저 가장 짧은 코드

먼저 눈으로 결과를 보는 게 좋습니다. 아래 코드는 문자열 하나를 QR 코드 이미지로 저장합니다.

import qrcode

text = "https://bscodelab.com"
img = qrcode.make(text)
img.save("my_qr.png")

print("저장 완료: my_qr.png")

정말 이게 끝입니다. 문자열을 qrcode.make()에 넣으면 이미지가 만들어지고, save()로 파일이 저장됩니다. 처음 보면 마법처럼 보이지만, 흐름은 생각보다 단순합니다.


문자열이 이미지가 되는 흐름

이 프로젝트를 아주 짧게 요약하면 아래 순서입니다.

  1. 문자열을 준비합니다.
  2. qrcode가 그 문자열을 QR 패턴으로 바꿉니다.
  3. 그 패턴을 이미지 객체로 만듭니다.
  4. 마지막에 PNG 파일로 저장합니다.

즉, 핵심은 문자열 → QR 패턴 → 이미지 → 파일 순서입니다. 이 흐름이 잡히면 나중에 URL뿐 아니라 연락처, 짧은 메모, 와이파이 안내 문자열도 같은 방식으로 바꿀 수 있습니다.


설치는 이렇게 하면 됩니다

가장 기본 설치는 아래처럼 시작할 수 있습니다.

pip install qrcode

이미지 기능을 조금 더 안정적으로 쓰고 싶다면 아래처럼 Pillow 의존성을 함께 설치하는 방식도 많이 씁니다.

pip install "qrcode[pil]"

입문자 기준으로는 두 번째가 더 덜 헷갈립니다. PNG 저장 예제를 따라갈 때도 자연스럽습니다.


입력 문자열만 바꿔도 바로 응용된다

QR 코드는 결국 문자열을 담는 그릇에 가깝습니다. 그래서 무엇을 넣느냐에 따라 결과물의 느낌이 달라집니다.

  • 블로그 주소
  • 깃허브 저장소 링크
  • 행사 체크인 링크
  • 짧은 안내 문구
  • 와이파이 안내용 텍스트
import qrcode

text = "안녕하세요. 이 QR 코드는 파이썬으로 만들었습니다."
img = qrcode.make(text)
img.save("hello_qr.png")

URL만 되는 줄 알았다면 여기서 감이 조금 바뀝니다. QR 코드는 생각보다 그냥 문자열에 가깝습니다.


파일 이름까지 받는 미니 프로젝트

이제 조금 프로젝트답게 바꿔보겠습니다. 사용자에게 문자열과 저장 파일명을 입력받는 버전입니다.

import qrcode

text = input("QR로 만들 문자열을 입력하세요: ").strip()
file_name = input("저장할 파일 이름을 입력하세요(확장자 제외): ").strip()

if not text:
    print("문자열이 비어 있으면 QR 코드를 만들 수 없습니다.")
else:
    if not file_name:
        file_name = "my_qr"

    img = qrcode.make(text)
    output_path = f"{file_name}.png"
    img.save(output_path)

    print(f"저장 완료: {output_path}")

이 버전에서 중요한 건 기능보다 감각입니다. 이제 코드는 단순 예제가 아니라, 입력을 받고 결과 파일을 남기는 작은 도구가 됩니다.


qrcode.make가 편한 이유

qrcode.make()는 빠르게 시작할 때 정말 편합니다. 옵션을 많이 몰라도 되고, 일단 결과물을 만드는 데 집중할 수 있습니다.

  • 오늘 바로 하나 만들어보고 싶을 때
  • 수업이나 블로그 예제로 짧게 보여주고 싶을 때
  • 디자인보다 생성 흐름 이해가 먼저일 때

입문 단계에서는 qrcode.make로 먼저 성공 경험을 만들고, 옵션이 필요해질 때 QRCode 클래스로 내려가면 됩니다.


크기와 여백을 조절하고 싶다면

조금 더 다듬고 싶다면 QRCode 클래스를 쓰면 됩니다. 여기서는 크기, 여백, 오류 복원 수준 같은 값을 직접 줄 수 있습니다.

import qrcode
from qrcode.constants import ERROR_CORRECT_M

qr = qrcode.QRCode(
    version=1,
    error_correction=ERROR_CORRECT_M,
    box_size=10,
    border=4,
)

qr.add_data("https://bscodelab.com/python")
qr.make(fit=True)

img = qr.make_image(fill_color="black", back_color="white")
img.save("custom_qr.png")

처음 보면 옵션이 많아 보여도, 실제로 자주 보는 값은 몇 개 안 됩니다. version은 QR 코드 크기 단계, error_correction은 오류 복원 수준, box_size는 칸 하나의 픽셀 크기, border는 바깥 여백 두께입니다.

README 기준으로 border=4는 기본값이자 최소 권장 여백입니다. 초보자라면 괜히 줄이지 않는 편이 안전합니다.


version은 직접 고정하지 않아도 된다

데이터 길이가 달라질 수 있다면 fit=True를 같이 써서 자동으로 맞추게 두는 편이 편합니다. 처음에는 이렇게 기억하면 충분합니다.

  • 데이터가 짧고 실험용이면 기본값으로 시작
  • 길이가 달라질 수 있으면 fit=True
  • 정말 크기를 통제해야 할 때만 version을 신경쓰기

저장한 PNG는 어디에 쓰면 좋을까

  • 발표 자료 마지막 장에 링크 넣기
  • 명함이나 소개 카드에 포트폴리오 주소 붙이기
  • 가게 안내문에 메뉴 링크 넣기
  • 오픈채팅, 폼, 설문 링크를 빠르게 공유하기

공유용으로 저장할 때는 파일 이름도 조금 신경 쓰면 좋습니다. 예를 들면 event-checkin-qr.png, portfolio-link-qr.png처럼 목적이 드러나게 두는 편이 덜 헷갈립니다.


색을 바꾸고 싶을 때 주의할 점

import qrcode

qr = qrcode.QRCode(box_size=10, border=4)
qr.add_data("https://bscodelab.com")
qr.make(fit=True)

img = qr.make_image(fill_color="darkblue", back_color="white")
img.save("blue_qr.png")

색상도 바꿀 수 있습니다. 다만 색 대비가 약하거나, 배경을 너무 화려하게 바꾸거나, 가운데에 이미지를 무리해서 넣으면 스캔 품질이 떨어질 수 있습니다. 그래서 첫 버전은 검은색과 흰색 조합으로 두는 편이 가장 무난합니다.


자주 하는 실수

  • 빈 문자열을 넣고 왜 안 예쁘지 고민하는 경우
  • 파일 이름을 안 받아서 매번 같은 이름으로 덮어쓰는 경우
  • 여백을 줄이면 더 깔끔할 거라고 생각하는 경우
  • 색을 너무 과하게 바꿔서 스캔이 잘 안 되는 경우

특히 여백은 보기보다 중요합니다. QR 코드는 바깥의 조용한 여백까지 포함해서 읽히는 경우가 많아서, 처음에는 기본값을 존중하는 편이 좋습니다.


이 프로젝트로 같이 익히는 파이썬 감각

  • 패키지 설치와 import
  • 문자열 입력 받기
  • 함수 호출 결과를 변수에 담기
  • 파일 저장하기
  • 조건문으로 예외 상황 처리하기

그래서 입문 프로젝트로 손맛이 좋습니다. 결과물이 눈에 보이니까 중간에 덜 지칩니다. 파이썬 문자열 감각을 같이 다지고 싶다면 파이썬 리스트와 튜플 차이 글이나 파이썬 map과 filter, list comprehension 차이 글도 이어서 보기 좋습니다.


다음 장난은 이렇게 키우면 된다

  • 여러 링크를 한꺼번에 QR 이미지로 저장하기
  • CSV 파일을 읽어서 QR 코드 일괄 생성하기
  • 파일명 규칙을 자동으로 붙이기
  • 웹 페이지용 안내 QR 세트를 만들기

즉, 이 글의 핵심은 QR 코드 자체보다도 작게 시작해서 바로 쓸 수 있는 도구를 만드는 경험입니다.


마무리

파이썬 QR 코드 생성기는 입문 프로젝트로 아주 좋습니다. 코드는 짧지만 결과가 확실하고, 저장까지 끝나면 진짜 뭔가 하나 만든 느낌이 남습니다.

기억할 건 단순합니다. 먼저는 qrcode.make()로 빠르게 만들고, 그다음에 필요해지면 QRCode 클래스로 크기와 옵션을 조절하면 됩니다. 공식 문서를 함께 보고 싶다면 qrcode 패키지 페이지와 python-qrcode GitHub README를 참고하면 됩니다.



함께 보면 좋은 글

파이썬 리스트와 튜플 차이

파이썬 map과 filter, list comprehension 차이

파이썬 랜덤 비밀번호 생성기 만들기

함께보면 좋은 글