第三十天!
二維碼(QR碼)是一種編碼數據的方塊圖形矩陣,常用於儲存和快速讀取數據。它是由日本公司Denso Wave於1994年開發的一種矩陣條碼類型。二維碼的優勢在於它可以快速讀取大量數據,並且不需要特殊的掃描設備。它的應用範圍廣泛,具有方便、高效和可靠的特點。它的應用十分廣泛,不需詳細列明。
>>pip install qrcode
import qrcode
img = qrcode.make('https://ithelp.ithome.com.tw/articles/10339540') # 要轉換成 QRCode 的文字
img.show()
img.save('qrcode.png')
範例:
import qrcode
qr = qrcode.QRCode(
version = 3,
error_correction = qrcode.constants.ERROR_CORRECT_Q,
box_size=15,
border=1
)
qr.add_data('https://ithelp.ithome.com.tw/articles/10339540') #在這裡輸入您的網址或文字
qr.make(fit=True) # 根據參數製作為 QRCode 物件
img = qr.make_image(fill_color = "red") # 產生 QRCode 圖片
img.show()
img.save('qrcode2.png') # 儲存圖片
變數 | 用途 |
---|---|
version |
QR code的版次,可設定1至40,簡單來說就是二維碼有多複雜。 |
error_correction |
容錯率,分為ERROR_CORRECT_L (7%)、ERROR_CORRECT_M (15%)、ERROR_CORRECT_Q (25%)、ERROR_CORRECT_H (30%),有時候只需掃描部份就可以閱讀到二維碼 |
box_size |
設定像素 |
border |
設定圖片的邊界 |
我們要在二維碼的中心加入一個圖案,以下就是今次要用圖片,我把它命名為spyc.jpg
。
這裏需要用到另外一個資料庫
>>pip install Pillow
import qrcode
from PIL import Image
qr = qrcode.QRCode(
version=7,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=15,
border=1
)
#為二維碼新增數據
qr.add_data("https://www2.pyc.edu.hk/index.php")
qr.make(fit=True)
#從二維碼產生圖像
qr_image = qr.make_image(fill_color="green")
# 打開圖像並調整其大小
with Image.open("spyc.jpg") as pyc:
qr_width, qr_height = qr_image.size
pyc_resized = pyc.resize((qr_width // 4, qr_height // 4))
# 計算影像在二維碼上疊加的位置
overlay_x = (qr_width - pyc_resized.width) // 2
overlay_y = (qr_height - pyc_resized.height) // 2
# 將覆蓋影像貼到二維碼影像上
qr_image.paste(pyc_resized, (overlay_x, overlay_y))
qr_image.show()
qr_image.save("qrcode3.png")
qr.make_image(fill_color="green")
製作二維碼及將其顏色設定為綠色。
with Image.open("spyc.jpg") as pyc
開啟要用到圖片,這裏用到PIL
資料庫的函數。
qr_image.paste
貼上圖片
有時侯二維碼有漸變色會更好看,以下面是一個例子
import qrcode
from qrcode.image.styledpil import StyledPilImage
from qrcode.image.styles.colormasks import HorizontalGradiantColorMask
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=2
)
qr.add_data('https://ithelp.ithome.com.tw/articles/10339540')
qr.make(fit=True)
img = qr.make_image(image_factory=StyledPilImage, color_mask=HorizontalGradiantColorMask((255,255,255),(255,0,0),(0,0,255)))
img.show()
img.save('qrcode4.png')
這個例子沒有很難所以就不解釋了。
在這三十天中,我發現我寫程式的實力不足,做過的專案只有幾個,預備時間亦不足,令兩天的內容大量刪減。之前說過會補回的內容應該會在以後我之後在自己的網站補。
我應該會去繼續練習,也許會找朋友一起製作專案,有興趣的話可以留下你的discord聯絡方式,如果覺得我的文章對你有幫助或有更好的建議,可以追蹤我和不妨在留言區提出,我們明天再見。
reference:
https://steam.oxxostudio.tw/category/python/example/qrcode.html