명함·포스터에 바로 쓰는 QR코드, 파이썬으로 자동 생성하기

명함·포스터에 바로 쓰는 QR코드, 파이썬으로 자동 생성하기 (완성 코드 공개)

파이썬으로 QR코드를 자동으로 생성하는 모습


"블로그 주소 QR코드를 명함에 넣고 싶다", "매장 메뉴판마다 테이블 번호가 다른 QR코드를 50개 만들어야 한다", "거래처별로 다른 URL이 담긴 QR코드를 대량 생성해야 한다"…

온라인 QR코드 생성 사이트는 1개씩 만들 때는 편리하지만, 여러 개를 한꺼번에 만들어야 하거나 색상·크기를 일관되게 맞춰야 할 때는 불편합니다. 파이썬을 한 번만 세팅해두면 원하는 내용이 담긴 QR코드를 원하는 크기·색상으로 자동 생성하고, 엑셀 목록을 읽어 수십 개를 한 번에 만드는 것도 가능합니다.


1단계: 준비물 설치

파이썬이 설치되어 있어야 합니다. 없다면 python.org에서 최신 버전을 받아 설치하세요. 설치 시 반드시 "Add Python to PATH"에 체크해야 합니다.

QR코드 생성에 필요한 라이브러리를 설치합니다. 터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요:

pip install qrcode pillow

qrcode는 QR코드를 생성하는 라이브러리이고, pillow는 생성된 QR코드를 이미지 파일로 저장하고 색상·로고를 처리하는 라이브러리입니다. 두 가지 모두 필수입니다.

💡 이 코드로 할 수 있는 것: URL, 텍스트, 전화번호, 와이파이 접속 정보 등 어떤 내용이든 QR코드로 만들 수 있습니다. 색상 변경, 여백 조정, 로고 이미지 중앙 삽입, 엑셀 목록 기반 대량 생성까지 모두 지원합니다.

2단계: 완성 코드 — 기본 QR코드 생성

아래 코드를 그대로 복사해서 메모장에 붙여넣고, make_qr.py로 저장하세요. 저장 시 파일 형식은 "모든 파일", 인코딩은 UTF-8로 설정합니다.

import qrcode
from pathlib import Path

# ① 설정
QR_DATA      = "https://www.howtothea.com"          # ← QR코드에 담을 내용 (URL, 텍스트 등)
OUTPUT_PATH  = r"C:\Users\내이름\Desktop\qrcode.png" # ← 저장할 이미지 경로
QR_SIZE      = 10     # ← QR코드 크기 (1~40, 숫자가 클수록 고해상도)
QR_BORDER    = 4      # ← QR코드 여백 (기본값 4 권장)
COLOR_DARK   = "black"  # ← QR코드 색상 (검정 권장, "navy", "#2e3a59" 등 가능)
COLOR_LIGHT  = "white"  # ← 배경 색상

# ② QR코드 생성
qr = qrcode.QRCode(
    version       = 1,
    error_correction = qrcode.constants.ERROR_CORRECT_H,  # 오류 복구 수준 (H: 30%)
    box_size      = QR_SIZE,
    border        = QR_BORDER,
)
qr.add_data(QR_DATA)
qr.make(fit=True)

# ③ 이미지로 변환 및 저장
img = qr.make_image(fill_color=COLOR_DARK, back_color=COLOR_LIGHT)
img.save(OUTPUT_PATH)

print(f"  ✔ QR코드 생성 완료")
print(f"\n✅ 완료! QR코드 저장 → {OUTPUT_PATH}")

3단계: 실행 방법

  1. 코드 ① 설정의 QR_DATA에 QR코드에 담을 내용을 입력합니다. URL, 텍스트, 전화번호 어떤 내용도 가능합니다.
  2. OUTPUT_PATH에 저장할 이미지 파일 경로를 입력합니다.
  3. 터미널에서 아래 명령어로 실행합니다:
python make_qr.py

정상 실행 시 터미널에 이렇게 출력됩니다:

  ✔ QR코드 생성 완료

✅ 완료! QR코드 저장 → C:\Users\내이름\Desktop\qrcode.png

지정한 경로에 PNG 이미지 파일이 생성됩니다. 스마트폰 카메라로 바로 스캔해서 정상 작동하는지 확인하세요.


4단계: 자주 발생하는 오류와 해결법

오류 1: ModuleNotFoundError: No module named 'qrcode'

설치가 제대로 되지 않은 경우입니다. 아래 명령어로 다시 시도하세요.

python -m pip install qrcode pillow

오류 2: 생성된 QR코드가 스캔이 안 됨

QR코드에 담긴 데이터가 너무 많거나 QR_SIZE가 너무 작을 때 발생합니다. QR_SIZE를 15 이상으로 높이거나, error_correctionERROR_CORRECT_M으로 낮춰보세요. URL은 짧을수록 스캔이 잘 됩니다.

오류 3: 색상을 바꿨더니 스캔이 안 됨

QR코드의 명암 대비가 너무 낮으면 스캔이 어렵습니다. COLOR_DARK는 어두운 색, COLOR_LIGHT는 밝은 색으로 충분한 대비를 유지해야 합니다. 밝은 색 배경에 어두운 색 QR코드 조합이 가장 안정적입니다.


응용 1: 로고 이미지를 QR코드 중앙에 넣고 싶다면

브랜드 로고나 아이콘을 QR코드 중앙에 삽입할 수 있습니다. 로고 이미지를 logo.png로 준비하고, 아래 코드를 ③ 이미지 저장 부분 앞에 추가하세요.

from PIL import Image

LOGO_PATH = r"C:\Users\내이름\Desktop\logo.png"   # ← 로고 이미지 경로

# QR코드 이미지를 RGBA 모드로 변환
img = img.convert("RGBA")
qr_w, qr_h = img.size

# 로고 크기를 QR코드의 25%로 조정
logo = Image.open(LOGO_PATH).convert("RGBA")
logo_size = int(qr_w * 0.25)
logo = logo.resize((logo_size, logo_size), Image.LANCZOS)

# QR코드 중앙에 로고 삽입
pos = ((qr_w - logo_size) // 2, (qr_h - logo_size) // 2)
img.paste(logo, pos, mask=logo)
img.save(OUTPUT_PATH)
⚠️ 로고 삽입 시 주의: 로고가 너무 크면 QR코드 인식률이 떨어집니다. QR코드 크기의 25% 이하를 권장합니다. 코드에서 ERROR_CORRECT_H를 유지해야 로고가 가려도 정상 스캔됩니다.

응용 2: 엑셀 목록으로 QR코드 대량 생성하기

거래처별 URL, 테이블별 주문 링크처럼 내용이 다른 QR코드를 여러 개 만들어야 할 때 유용합니다. 엑셀 파일에 아래처럼 데이터를 준비하세요.

A열(이름)      B열(URL 또는 내용)
테이블1        https://order.example.com/table/1
테이블2        https://order.example.com/table/2
테이블3        https://order.example.com/table/3

아래 코드를 bulk_qr.py로 저장하고 실행하면 엑셀의 각 행마다 QR코드 이미지가 자동 생성됩니다.

import qrcode
import pandas as pd
from pathlib import Path

EXCEL_PATH = r"C:\Users\내이름\Desktop\QR목록.xlsx"   # ← 엑셀 파일 경로
OUTPUT_DIR = r"C:\Users\내이름\Desktop\QR코드모음"    # ← 저장 폴더 경로
NAME_COL   = "이름"    # ← 파일명으로 쓸 열 이름
DATA_COL   = "URL 또는 내용"   # ← QR코드에 담을 내용 열 이름

output = Path(OUTPUT_DIR)
output.mkdir(exist_ok=True)

df = pd.read_excel(EXCEL_PATH, engine="openpyxl")
print(f"  ✔ 데이터 로드 완료: {len(df)}건")

for _, row in df.iterrows():
    qr = qrcode.QRCode(version=1,
                       error_correction=qrcode.constants.ERROR_CORRECT_H,
                       box_size=10, border=4)
    qr.add_data(str(row[DATA_COL]))
    qr.make(fit=True)
    img  = qr.make_image(fill_color="black", back_color="white")
    name = str(row[NAME_COL]).replace(" ", "_")
    img.save(output / f"QR_{name}.png")
    print(f"  ✔ 생성: QR_{name}.png")

print(f"\n✅ 완료! 총 {len(df)}개 QR코드 생성 → {OUTPUT_DIR}")
💡 이전 게시글과 결합하면: 워드 문서 자동 생성 편과 결합하면 거래처별 견적서 문서에 해당 거래처 전용 QR코드를 자동으로 삽입하는 것도 가능합니다.

핵심 요약

  • 준비물: Python + qrcode + pillow 설치 (pip install qrcode pillow)
  • 설정: QR_DATA(담을 내용)와 OUTPUT_PATH(저장 경로)만 수정
  • 실행: 터미널에서 python make_qr.py 입력
  • 결과: PNG 이미지 파일로 저장, 색상 변경·로고 삽입·대량 생성까지 지원

이 코드를 응용하면 와이파이 접속 정보(SSID·비밀번호)를 담은 QR코드, vCard 형식의 명함 QR코드도 만들 수 있습니다.

이 블로그의 인기 게시물

카카오톡 용량 줄이기! 대화방 파일 삭제로 스마트폰 용량 확보법 (1분 해결)

느려진 구글 크롬 속도 2배 빨라지는 3가지 설정 방법 (2026년 최신 가이드)

업무 속도 3배 빨라지는 윈도우 기본 캡처 도구 단축키 및 200% 활용 꿀팁