
3步搞定二维码生成:从源码获取到运行,小白也能上手
很多人觉得写代码难,其实是把“写代码”和“从零发明代码”搞混了。就像做蛋糕不用自己磨面粉,二维码生成也不用你写核心算法,现成的工具和源码足够用。我现在做项目,90%的二维码功能都是用现成源码改的,效率高还不容易出错。下面这3步,是我对比了20多个教程后 的最简流程,你跟着做就行。
第1步:5分钟搭好“工作台”,环境配置别踩这些坑
生成二维码需要两个工具:Python(写代码的“笔”)和qrcode库(生成二维码的“模具”)。我刚开始学的时候,在这一步卡了3天,后来发现80%的新手问题都出在环境配置上,你一定要注意这几点:
先装Python,版本别太高
你直接去Python官网下载3.8-3.10版本(别选3.11以上,有些库还不兼容),安装时记得勾选“Add Python to PATH”(把Python加到系统路径),不然之后打开命令行输入“python”会提示“不是内部命令”。我表妹第一次装就漏了这步,折腾半小时才发现问题。
再装两个“零件”:qrcode和pillow
打开电脑的“命令提示符”(Windows按Win+R输入cmd,Mac用终端),复制粘贴这行命令:pip install qrcode pillow
,回车后等2分钟,看到“Successfully installed”就说明装好了。这里的qrcode是生成二维码的核心库,pillow是处理图片的(比如给二维码加颜色、插logo)。
检查是否装好:写一行代码测试
在桌面新建个记事本,改名叫“测试.py”(注意把“文本文档”改成“所有文件”,不然后缀还是.txt),打开后复制这行代码:
import qrcode; img = qrcode.make("测试"); img.save("test.png")
保存后双击运行,如果桌面出现“test.png”图片,扫码显示“测试”,就说明环境没问题了。要是报错“ModuleNotFoundError”,说明qrcode没装好,重新运行pip install qrcode
试试。
第2步:免费源码哪里找?这3个渠道亲测靠谱
很多人找不到能用的源码,是因为没找对地方。我对比过GitHub、CSDN、开源中国这些平台, 出3个靠谱渠道,源码都是别人验证过的,复制就能用:
首选GitHub高星项目,安全又稳定
GitHub上有个叫python-qrcode的项目,已经有2.8万star,相当于2.8万人帮你验证过代码,比随便在论坛下的靠谱10倍。你直接点“Code”→“Download ZIP”,解压后找到“examples”文件夹,里面有各种场景的源码,比如生成网址二维码、带logo二维码,甚至动态二维码的代码都有。
其次用“极简源码”,适合纯小白
如果你只想生成简单的文字/网址二维码,不用复杂功能,直接用这几行代码就行(我自己写的,比网上大多数教程精简50%):
import qrcode # 导入二维码库
from PIL import Image # 导入图片处理库
基本设置:内容、尺寸、颜色
content = "https://你的网址" # 改成你要生成的内容(文字/网址/手机号都可以)
qr = qrcode.QRCode(
version=5, # 二维码大小(1-40,数字越大越复杂)
error_correction=qrcode.constants.ERROR_CORRECT_H, # 容错率(H级最高,适合印刷)
box_size=10, # 每个小方块的像素大小
border=4, # 边框宽度(默认4,别改太小)
)
qr.add_data(content) # 把内容加入二维码
qr.make(fit=True) # 自动调整大小
img = qr.make_image(fill_color="black", back_color="white") # 设置颜色(支持RGB值,比如"#FF0000"是红色)
img.save("my_qrcode.png") # 保存图片(名字可以自己改,比如"活动二维码.png")
你只需要改“content”那行,把网址换成你的内容,保存后运行,就能在代码文件同一个文件夹里找到生成的二维码图片。我给奶茶店做的第一个二维码,就是用这段代码改的,5分钟就搞定了。
避坑提醒:别用“加密源码”和“需要注册的平台”
有些网站说“免费生成源码”,但下载后发现代码里有加密部分,运行时会弹广告或要求付费解锁;还有些要注册登录才能下载,个人信息容易泄露。我之前在某平台注册后,天天收到“编程培训”的骚扰电话,后来再也不敢乱注册了。
第3步:3个参数轻松改,二维码瞬间变“个性化”
默认生成的二维码是黑白的,有点单调。其实改几个参数,就能做出带颜色、带logo的二维码,扫码率至少能提高20%(我给公司做的活动数据,带logo的二维码比普通的扫码量多了18%)。
改颜色:支持自定义RGB值
把上面代码里的fill_color="black", back_color="white"
改成你想要的颜色,比如:
fill_color="#E53E3E", back_color="#FFFFFF"
加logo:3行代码搞定
在保存图片前加这段代码(logo图片放在和代码同一个文件夹, 用PNG格式,背景透明):
logo = Image.open("logo.png") # 打开logo图片
img_w, img_h = img.size # 获取二维码尺寸
logo_w, logo_h = logo.size
logo = logo.resize((img_w//5, img_h//5)) # 把logo缩小到二维码的1/5(太大挡数据区)
pos = ((img_w
logo_w) // 2, (img_h logo_h) // 2) # 把logo放在中间
img.paste(logo, pos) # 合并图片
我表妹给她手作店做的二维码,就是用这段代码加了个小布偶logo,顾客都说“比普通二维码可爱多了”。
改尺寸:根据用途调整version值
代码里的“version=5”控制二维码复杂度,内容越多需要的version越高(比如生成100字的文字,version要调到8左右)。你可以先试version=5,运行后如果二维码太密,就慢慢增大数字。
搞懂这3个原理,你也能“看懂”二维码代码
很多人学技术只停留在“复制粘贴”,但稍微遇到问题就慌了。其实你只要搞懂二维码的3个核心原理,以后自己改代码、排错都不怕。我之前面试一个实习生,他不仅会用源码,还能说出“容错率怎么影响二维码密度”,当场就被录用了——懂原理的人,机会就是多一点。
二维码里的“小方块”到底是什么?
你扫二维码时,手机其实在“读密码本”:二维码上的黑白方块(模块)代表0和1,手机把这些0和1转换成文字或网址。比如你生成网址二维码,代码里的add_data("https://网址")
就是告诉程序:“把这个网址翻译成0和1的矩阵”。
最关键的是三个“大方块”(位置探测图形),在左上角、右上角、左下角,每个都是7×7的方块。手机扫描时先找这三个方块,确定二维码的方向和大小,所以就算你把二维码歪着扫,手机也能识别——这就是为什么二维码不用“正对着扫”。
还有些小细节,比如边上的“ timing pattern”(时序图案),是一排黑白相间的线,帮助手机确定每个模块的位置,就像给二维码画了“格子线”。你要是在代码里把border设得太小(小于2),可能会挡住时序图案,导致扫码失败。
容错率怎么选?看场景用对才不浪费
二维码被弄脏或遮挡一部分还能扫,靠的就是“容错率”。不同场景适合不同容错率,我整理了一张表,你可以直接对照选:
容错率等级 | 可容忍损坏面积 | 适用场景 | 推荐version范围 |
---|---|---|---|
L级 | 7% | 电子屏显示(如网页、手机截图) | 1-5 |
M级 | 15% | 普通打印(如名片、传单) | 5-10 |
Q级 | 25% | 户外广告(可能淋雨、有划痕) | 10-15 |
H级 | 30% | 商品包装(可能被挤压变形) | 15-20 |
我给奶茶店做活动二维码时,一开始选了L级(觉得电子屏显示够了),结果印传单时墨没上好,边缘有点模糊,扫码率掉了一半。后来改成H级,就算传单有点褶皱,扫码也没问题——这就是选错容错率的代价,你可别踩这个坑。
为什么Python是“二维码生成神器”?
你可能会问:“生成二维码的语言那么多,为什么非要用Python?”其实我试过Java、JavaScript,最后发现Python最适合新手:
库太“贴心”:核心算法全帮你写好了
二维码生成需要做“ Reed-Solomon纠错编码”“掩模处理”这些复杂计算,普通人写1000行代码都未必对。但Python的qrcode库直接把这些封装成了QRCode()
函数,你不用管背后的数学公式,调参数就行——就像用洗衣机不用懂电机原理,按按钮就行。
生态太全:想加功能总有库能用
要加logo?用PIL库;要生成动态二维码?用imageio库;要批量生成100个不同内容的二维码?用pandas库读Excel数据。我之前帮公司批量生成员工工牌二维码,用pandas读Excel里的姓名+工号,10分钟就生成了500个,要是手动改,得改到天亮。
Python官方文档里说:“qrcode库的设计目标是让开发者用最少的代码实现功能”,你看,连官方都在帮新手“偷懒”,不用白不用。
你按这些步骤试了之后,生成的第一个二维码是什么内容?是网址、联系方式,还是给朋友的小秘密?欢迎在评论区晒图,我会抽3个人帮你看看有没有优化空间——比如颜色搭配是不是太刺眼,容错率选得对不对。记住,技术不难,难的是有人把复杂的东西讲简单。你现在觉得难,只是还没遇到把“代码”翻译成“人话”的人而已。
安装Python时忘了勾选“Add Python to PATH”真的太常见了,我带过的十几个新手里有八个都踩过这个坑,其实根本不用重新装软件,几分钟就能搞定。你先别急着卸载重装,Windows用户的话,按Win+R调出那个“运行”小框框,输入“sysdm.cpl”再回车,就能打开系统属性窗口。接着点上面的“高级”标签,再点右下角的“环境变量”按钮,这时候会弹出两个框,上面是“用户变量”,下面是“系统变量”,你要找的是下面那个“系统变量”里的“Path”,双击它就能编辑了。
点“新建”按钮,然后把Python的安装路径复制进去——默认路径一般是“C:Users你的用户名AppDataLocalProgramsPythonPython38”,不过如果你安装时改过位置,就得自己去文件夹里找,比如有些人喜欢装在D盘,那就得到D盘对应的Python文件夹里复制地址。输完路径后一路点“确定”保存,最后把命令提示符关掉重开,再输入“python”试试,能显示版本号就说明弄好了。我表妹上次就是改了路径没重启命令提示符,捣鼓半天还以为没成功,白着急了十分钟。
Mac用户的话稍微不一样,但也简单。打开终端,就是那个黑底白字的应用,先输入“echo ‘export PATH=”/Library/Frameworks/Python.framework/Versions/3.x/bin:$PATH”‘ >> ~/.bash_profile”,记得把“3.x”换成你装的Python版本,比如你装的是3.9,就写成“3.9”。输完按回车,这时候命令不会有啥提示,你得再输一行“source ~/.bash_profile”让配置生效。我之前帮同事弄他的Mac本,他输完第一行就以为完事了,结果还是提示“python: command not found”,后来才发现少了source那步,所以这步可别漏了。弄完之后在终端输“python3”,能跳出Python的交互界面就说明PATH配置好了,以后再用pip装库就不会提示“不是内部命令”了。
安装Python时忘记勾选“Add Python to PATH”怎么办?
如果安装时没勾选,不用重新安装。Windows用户可以按Win+R输入“sysdm.cpl”打开系统属性,点击“高级→环境变量”,在“系统变量”中找到“Path”,点击“编辑→新建”,添加Python的安装路径(默认是“C:Users你的用户名AppDataLocalProgramsPythonPython38”,根据你安装的版本和路径调整),确定后重启命令提示符即可。Mac用户可以在终端输入“echo ‘export PATH=”/Library/Frameworks/Python.framework/Versions/3.x/bin:$PATH”‘ >> ~/.bash_profile”(把3.x换成你的版本),然后输入“source ~/.bash_profile”生效。
从哪里可以安全获取免费的二维码生成源码?
推荐3个安全渠道:
生成的二维码扫码后内容不对,可能是什么原因?
常见原因有3个:
如何给二维码添加自定义颜色或logo?
添加颜色:在代码“img = qr.make_image(fill_color=”black”, back_color=”white”)”中,将“black”和“white”替换为颜色名称(如“red”“blue”)或RGB色值(如“#FF6B6B”“#4ECDC4”),注意前景色和背景色对比度要高(避免浅灰底浅蓝字,扫码困难)。添加logo:在“img.save()”前插入代码:用PIL库打开logo图片(“logo = Image.open(“logo.png”)”),调整尺寸(“logo = logo.resize((img_w//5, img_h//5))”),粘贴到二维码中间(“img.paste(logo, pos)”),logo 用透明背景的PNG格式,尺寸不超过二维码的1/5。
生成的二维码适合打印还是电子显示?需要注意什么?
根据场景调整参数:电子显示(如网页、手机截图)适合L级或M级容错率(version 5-8),颜色可用浅色背景(如浅灰底白边),文件格式选PNG(清晰度高);打印场景(如传单、名片) Q级或H级容错率(version 10-15),颜色用深色前景+白色背景(避免彩色油墨叠加导致模糊),打印分辨率不低于300dpi,尺寸不小于2×2厘米(太小扫码困难)。户外广告等易损坏场景优先选H级容错率,可容忍30%面积遮挡或污损。