Real Python์์ ์ฌ๋ฏธ์๋ ํํ ๋ฆฌ์ผ์ ๋ฐ๊ฒฌํ์ฌ ๋ฐ๋ผ์ ๊ตฌํํด๋ณด์์ต๋๋ค!
ํํ ๋ฆฌ์ผ ๋ฐ๋ก๊ฐ๊ธฐ
python์ segno ํจํค์ง๋ฅผ ์ด์ฉํ๋ฉด QR์ฝ๋๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ QR code์ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ gif ํ์ผ์ ์ถ๊ฐํ ์ ์๋ ๋ถ๋ถ์ด ์ฌ๋ฐ์์ต๋๋ค.
์์ ํํ ๋ฆฌ์ผ์์๋ ๊ธฐ๋ณธ์ ์ธ ํ๋ฐฑ QR ์ฝ๋๋ฅผ ๋ง๋๋ ๊ณผ์ ์ ์๊ฐํฉ๋๋ค.
์ฌ์ด์ฆ์ ์ฌ๋ฐฑ์ ๋ณ๊ฒฝํ๊ณ ์์์ ์
ํ ์๋ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํ๋ ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
์ ๊ฐ ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผํ ํ๊ฒฝ์ python 3.10, window ์์ ์คํํ์ต๋๋ค.
์ฐ์ qr ์ฝ๋ ์์ฑ์ ์ํ segno ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
python -m pip install segno
์๋์ ๊ฐ์ด ๊ฐ๋จํ๊ฒ segno ํจํค์ง๋ก QR ์ฝ๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค!
import segno
qrcode = segno.make_qr("https://naver.com/") # QR ์ฝ๋๋ฅผ ๋ง๋ค ํ
์คํธ
# QR ์ฝ๋ ์ ์ฅ
qrcode.save(
"wide_border_qrcode.png", # ์ ์ฅ ํ์ผ๋ช
scale=5, # QR ์ฝ๋ ์ฌ์ด์ฆ
border=10, # ๋ฐฐ๊ฒฝ ์ฌ๋ฐฑ ํฌ๊ธฐ
light=(173, 216, 230), # ๋ฐฐ๊ฒฝ ์์ RGB
dark=(173, 216, 230), # QR ์ฝ๋ ์์ RGB
)
์ด์ธ์ ์ถ๊ฐ์ ์ธ ์ต์ ์ Segno ๊ณต์ ์ฌ์ดํธ ๋ฅผ ์ฐธ๊ณ ํ์ธ์
๋ค์์ผ๋ก๋ ์ด๋ฏธ์ง, gif๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
์ด๋ฅผ ์ํด์๋ qrcode-artistic
๋ฅผ ์ถ๊ฐ๋ก ์ค์นํฉ๋๋ค.
python -m pip install qrcode-artistic
qr ์ฝ๋์์ ๋ฐฐ๊ฒฝ์ ์ถ๊ฐํ๋ ์ฝ๋๋ ์๋์ ๊ฐ์ต๋๋ค.
์ฌ๊ธฐ์์๋ ์ธํฐ๋ท ์์ ์๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐฐ๊ฒฝ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด urlopen๋ฅผ ์ฌ์ฉํฉ๋๋ค.
background์ ์ง์ ๋ก์ปฌ ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ช
์ํด๋ ๋ฉ๋๋ค.
import segno
from urllib.request import urlopen
slts_qrcode = segno.make_qr("https://www.youtube.com/watch?v=hTWKbfoikeg")
# ์ง์ ๋ก์ปฌ์ ์๋ ํ์ผ์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด
# nirvana_url = './test.gif' ์ ๊ฐ์ด ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ๋ช
์ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
nirvana_url = urlopen("https://media.giphy.com/media/LpwBqCorPvZC0/giphy.gif")
slts_qrcode.to_artistic(
background=nirvana_url, # ํ์ผ ๊ฒฝ๋ก ๋๋ ์์ฒญํ ์ด๋ฏธ์ง
target="animated_qrcode.gif", # ์ ์ฅ ํ์ผ๋ช
scale=5, # ํฌ๊ธฐ
)
์์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ QR ์ฝ๋๋ฅผ ์ป์ ์ ์์ต๋๋ค
์์ ํํ ๋ฆฌ์ผ์ ์งํํ๋ฉฐ ๊ฐ์ฑ์ด ๋ด๊ธด QR ์ฝ๋๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ฌ๋ฐ์์ต๋๋ค!
fastapi์ create-react-app ์ ์ด์ฉํด์ ๊ฐ๋จํ QR ์ฝ๋ ์์ฑ๊ธฐ๋ฅผ ๊ฐ๋ฐํด๋ณด์์ต๋๋ค.
QR ์ฝ๋ ์์ฑ๊ธฐ ์ด์ฉํ๊ธฐ [ aws free tier๊ฐ ์ข
๋ฃ๋์ด ์ฌ์ดํธ๋ ๋ด๋ ค๊ฐ ์ํ์
๋๋ค.]
QR ์ฝ๋๋ฅผ ์์ฑํ ์ฃผ์์ ์ด๋ฏธ์ง ํ์ผ ๋๋ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง ์ฃผ์๋ฅผ ์
๋ ฅํ๊ณ
QR ์ฝ๋ ์์ฑ ๋ฒํผ์ ๋๋ฅด๋ฉด ์์ฑ๋ฉ๋๋ค.
์ด๋ฏธ์ง ํ์ผ/gif ์ฉ๋์ ๋ฐ๋ผ ๋๊ธฐ์๊ฐ์ด 4~5์ด ๊ฐ๋ ๋ฐ์ํฉ๋๋ค
์ ์ ๋ธ๋ก๊ทธ ์ฃผ์ QR์ฝ๋๋ฅผ ์๋์ฒ๋ผ ๋ง๋ค์ด๋ณด์์ต๋๋ค.
์ด๋ฒ ๊ฒ์๊ธ์์๋ QR์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋ segno ํจํค์ง๋ฅผ ์๊ฐํด๋ณด์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
'note' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
airflow ์ฌ์ฉ๊ธฐ (0) | 2023.12.05 |
---|---|
[airflow] ubuntu ์๋ฒ์ airflow ์๋น์ค ๋ฑ๋กํ๊ธฐ (0) | 2023.11.18 |
[MLOps] MLOps์ ์ํคํ ์ฒ์ ์ํฌํ๋ก์ฐ (0) | 2023.11.08 |
[MLOps] MLOps์ ์์น๊ณผ ๊ตฌ์ฑ์์ (0) | 2023.11.08 |
[MLOps] MLOps ์ํคํ ์ฒ ์ดํด๋ณด๊ธฐ (0) | 2023.11.08 |