無纔開發這些功能,只好用別人現成的。生成的png文件,用於激光雕刻機制作銘牌。網上搜了一下,有這麼幾個插件,qrcode, drawSvg和pygal可能有用。
參考網頁:
- https://pypi.org/project/qrcode/
- https://github.com/lincolnloop/python-qrcode
- http://www.pygal.org/en/stable/index.html
- https://pypi.org/project/drawSvg/
- https://www.cnblogs.com/lab-zj/p/13321469.html
發現多慮了,使用簡單粗暴的畫法,來個幾何圖形就可以了。參考如下頁面
安裝插件
先安裝qrcode,自帶 pillow
$ sudo pip3 install qrcode[pil]
實驗一下生成qrcode的svg文件,
$ qr --factory=svg "我愛我的祖國!" > test.svg
$ firefox test.svg
果然瀏覽器內看到了,還能掃描出來。換個python版本的,能否生成 svg文件呢?
import qrcode
import qrcode.image.svg
if method == 'basic':
# Simple factory, just a set of rects.
factory = qrcode.image.svg.SvgImage
elif method == 'fragment':
# Fragment factory (also just a set of rects)
factory = qrcode.image.svg.SvgFragmentImage
else:
# Combined path factory, fixes white space that may occur when zooming
factory = qrcode.image.svg.SvgPathImage
img = qrcode.make('Some data here', image_factory=factory)
$ sudo pip3 install lxml
運行代碼
下面這段代碼來自,https://www.cnblogs.com/lab-zj/p/13321469.html
import qrcode
from PIL import Image
import matplotlib.pyplot as plt
def getQRcode(data, file_name):
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=5,
border=4,
)
# 添加數據
qr.add_data(data)
# 填充數據
qr.make(fit=True)
# 生成圖片
img = qr.make_image(fill_color="green", back_color="white")
# 添加logo,打開logo照片
icon = Image.open("1.jpg")
# 獲取圖片的寬高
img_w, img_h = img.size
# 參數設置logo的大小
factor = 6
size_w = int(img_w / factor)
size_h = int(img_h / factor)
icon_w, icon_h = icon.size
if icon_w > size_w:
icon_w = size_w
if icon_h > size_h:
icon_h = size_h
# 重新設置logo的尺寸
icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
# 得到畫圖的x,y座標,居中顯示
w = int((img_w - icon_w) / 2)
h = int((img_h - icon_h) / 2)
# 黏貼logo照
img.paste(icon, (w, h), mask=None)
# 終端顯示圖片
plt.imshow(img)
plt.show()
# 保存img
img.save(file_name)
return img
if __name__ == '__main__':
getQRcode("世情薄,人情惡,雨送黃昏花易落。曉風乾,淚痕殘,欲箋心事,獨語斜闌。"
"難,難,難!人成各,今非昨,病魂常似鞦韆索。角聲寒,夜闌珊,怕人尋問,咽淚裝歡。瞞,瞞,瞞!", 'my.png')
未完待續。