用 Python 制作各种用途的二维码

news2025/7/13 21:45:12

当你提到二维码时,大多数人想到的是仓库管理或产品标签等 "工业 "应用,但这篇文章在很大程度上是关于二维码的个人和社会用途。

有趣的事实

二维(QR)码是在1994年发明的,最近几年由于新冠肺炎的出现,它的"非接触 "特性使其应用广泛。

二维码具备良好的解决方案。它可以被几乎所有的手机使用默认的照片应用程序扫描,同样,扫描它们也会根据它们的背景触发某种动作。

例如,一个含有URL的QR码允许你在浏览器中打开它。含有Wifi登录信息的二维码允许你立即连接。含有联系人详细信息的二维码允许您在地址簿中创建一个新的联系人。带有地理坐标的二维码允许你在地图上找到一个位置。这使扫描者的生活变得非常容易,并使信息提供者完全脱离......他们不再需要为了发生互动而在场。

开始

在开始之前,我做了一些研究,并选择了Python中的segno模块,因为它有全面的功能列表和漂亮的文档。在谷歌搜索Python中的QR码时,它并没有出现在最前面,甚至在模块名称中也没有 "QR",但不要因此而放弃--它是一个很棒的工具。

让我们先用 .make()方法创建一个最简单的QR码。它只包含可以复制或传输的原始数据,由于内容很短, segno默认创建一个有趣的 "微型QR "码。

 
  1. pip install segno

 
  1. import segno

  2. price_tag = segno.make("£9.99")

  3. price_tag.save("Price Tag.png")

你也可以使用方便的 .show方法,而不是用 .save来创建一个文件,然后导航到它,显示它,使用后再删除它。这将创建一个临时图像文件,并在你的默认图像查看器中自动打开。这对调试或测试很有帮助,特别是当你开始试验不同的颜色和背景图像,并想确认QR码仍能正常扫描时。

用于分享URL的QR码

使用同样的方法和稍大的有效载荷,我第一个任务(分享视频信息)的Python代码是微不足道的。

 
  1. import segno

  2. video = segno.make('https://youtu.be/px6FeOKD3Zc')

  3. video.save('Video.png', scale=4)

只需多写一行代码,我就能创建一个更加丰富多彩的QR码,在这种情况下,我最喜欢的一张图片实际上是一个用Piet编程语言编写的 "Hello World "脚本。

 
  1. pip install qrcode-artistic

 
  1. import segno

  2. piet = segno.make('https://esolangs.org/wiki/Piet', error='h')

  3. piet.to_artistic(background="background.png", target='Piet.png', scale=16)

携带WIFI详细信息的QR码

我的第二个任务(WIFI登录细节)的Python代码也同样简单,但我定制了颜色并使输出更大。

 
  1. import segno

  2. wifi_settings = {

  3. ssid='(Wifi Name)',

  4. password='(Wifi Password)',

  5. security='WPA',

  6. }

  7. wifi = segno.helpers.make_wifi(**wifi_settings)

  8. wifi.save("Wifi.png", dark="yellow", light="#323524", scale=8)

联系信息的二维码

在这些快速成功的鼓励下,我决定为一个朋友的艺术和手工艺业务创建一个二维码。

 
  1. import segno

  2. vcard = segno.helpers.make_vcard(

  3. name='Pxxx;Jxxx',

  4. displayname='Times Tables Furniture',

  5. email=('jxxxpxxx@timestables.furniture'),

  6. url=[

  7. 'https://www.etsy.com/uk/shop/TimesTablesFurniture',

  8. 'https://www.facebook.com/profile.php?id=100083448533180'

  9. ],

  10. phone="+44xxxxxxxxxx",

  11. )

  12. img = vcard.to_pil(scale=6, dark="#FF7D92").rotate(45, expand=True)

  13. img.save('Etsy.png')

对于我自己的VCard,我选择添加我公司的标志作为背景。

 
  1. import segno

  2. awsom = segno.helpers.make_vcard(

  3. name='Fison;Pete',

  4. displayname='AWSOM Solutions Ltd.',

  5. email=('pxxxfxxx@awsom.solutions'),

  6. url=[

  7. 'https://twitter.com/awsom_solutions',

  8. 'https://medium.com/@petefison',

  9. 'https://github.com/pfython'

  10. ],

  11. phone="+44xxxxxxxxxx",

  12. )

  13. awsom.to_artistic(

  14. background="logo.png",

  15. target='AWSOM.png',

  16. scale=6,

  17. quiet_zone="#D29500"

  18. )

用于其他目的的二维码

segno API还允许你做以下事情。

segno.helpers.make_email : 发送一封预先准备好主题和内容的电子邮件。对于订阅新闻简报,或者从邮件服务器上触发任何可能的行动,都是非常好的。

segno.helpers.make_epc_qr: 发起一个电子支付。

segno.helpers.make_geo: 在一个特定的经度和纬度打开默认的地图应用。

segno.make_sequence : 使用 "结构化附加 "模式创建一个QR码序列。

把所有东西都保存在内存中

如果你喜欢把所有的处理保持在 "内存中",而不是在硬盘或服务器上创建文件,你可以创建一个PIL图像对象,或者使用BytesIO保存一个类似文件的对象:

 
  1. import segno

  2. beatle = segno.make('Paul McCartney')

  3. beatle = qrcode.to_pil()

 
  1. import segno

  2. import io

  3. beatle = segno.make('Paul McCartney')

  4. buff = io.BytesIO()

  5. beatle.save(buff, kind='svg')

同样,如果你喜欢直接从URL中加载背景图片到内存中,而不是先在硬盘或服务器上创建一个文件,你可以使用urlopen方法。

 
  1. from urllib.request import urlopen

  2. import segno

  3. beatle = segno.make('Ringo Starr', error='h')

  4. url = 'https://media.giphy.com/media/HNo1tVKdFaoco/giphy.gif'

  5. bg_file = urlopen(url)

  6. beatle.to_artistic(background=bg_file, target='ringo.gif', scale=10)

二维码的创造性、家用式的想法

希望这篇短文能让您对使用二维码有兴趣,不仅仅是用于 "工业 "项目,而且还用于个人和社会项目。网上有很多文章,建议将二维码创造性地用于商业和营销,因此,在本文的最后,我想分享一些我自己的 "家用式 "想法,可能会吸引你。

  • 在你的垃圾桶边上有关于回收规则的信息

  • 触发一封电子邮件给亲人,说你已经安全到家。

  • 触发一个更新,说你已经离开了家。

  • 在你所在的城镇或乡村道路上寻宝;链接到你自己的网站,包括当地信息、社会媒体团体、当前的地理位置等。

  • 在你的房子周围为年幼的孩子寻宝,或举行晚宴。

  • 在明信片上贴上二维码,让家人和朋友直接进入你的旅行日记、照片日记或博客中的最新条目。

  • 洗衣机、微波炉、烤箱、打印机、锅炉、3D打印机、激光切割器、甚至汽车等电器的说明书。

  • 你的家谱或历史,或财产信息保存起来供后人参考。

  • 一个在线留言簿,游客可以记录他们的逗留,并留下个人的信息。

  • 冰箱上的贴纸,链接到最新的家庭购物清单。

  • 每个家庭成员的每周家务事清单。

  • 笔记本电脑、电话、相机、无人机等的 "如果丢失,请归还...... "贴纸。

  • 诚信箱--让人们在使用/消费/购买东西时付款,例如,从共享冰箱中的食物和饮料,在农场外出售的鸡蛋。

  • 预约管理电视/互联网/游戏的特权。

  • 婴儿保姆或宠物保姆的紧急联系信息。

  • 在停电的情况下为你提供紧急联络方式--水、电、煤气。

  • 为你看家护院的人提供当地的食品配送公司。

  • 个人视频信息/提醒。

  • 关于你最喜欢的装饰品或房子周围的艺术品的信息。

  • 你的酒架/酒窖的品酒说明。

  • 花园植物和树木的标签--物种、浇水、年龄等细节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一道非常棘手的 Java 面试题:i++ 是线程安全的吗?

i 是线程安全的吗? 相信很多中高级的 Java 面试者都遇到过这个问题,很多对这个不是很清楚的肯定是一脸蒙逼。内心肯定还在质疑,i 居然还有线程安全问题?只能说自己了解得不够多,自己的水平有限。 先来看下面的示例来…

cache 缓存

缓存原理 测试样例 验证码 获取验证码 验证 验证码是否正确 idea 启动缓存 手机验证码 idea 手机 获得验证码 ehchace 数据淘汰策略 使用redis 然后启动 redis 服务器 redis-server.exe redis.windows.conf 启动redis 客户端redis-cli.exe time-to-live 最大活动时间 缓…

jsp+ssm计算机毕业设计职业中介信息管理系统【附源码】

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JSPSSM mybatis Maven等等组成,B/S模式 Mave…

【蓝牙依赖】微信小程序 + uni通用,自用蓝牙依赖文件总结

引言 今年相较去年相比,做的比较多的是,蓝牙方面的对接工作。 因此,我整理了大半年来,对接蓝牙的经验,编写了蓝牙依赖文件。 这样可以有效的提升我的开发效率,以及合理增加我快乐的摸鱼时间 ~ 正文 废话…

ubuntu 安装supervisord

ubuntu 系统安装命令如下 sudo apt update && sudo apt install supervisor Supervisor服务在安装后自动运行(这点从安装后创建的symlink到systemd的自启动服务可以看出)。检查其状态: sudo systemctl status supervisor 如下安装…

基于SPRINGBOOT的高校羽毛球馆信息管理系统的设计与实现

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字):基于springboot的高校羽毛球馆信息管理系统的设计与实现 模块划分:通知类型、通知信息、用户信息、用户充值、…

成功转行Python工程师,年薪30W+,经验总结都在这!

这是给转行做Python的小白的参考,无论是从零开始,或者是转行的朋友来说,这都是值得一看的,也是可以作为一种借鉴。 而且我决定转行IT(互联网)行业(已转好几年),其实理由…

基于Java+Swing+mysql游泳馆会员管理系统

基于JavaSwingmysql游泳馆会员管理系统一、系统介绍二、功能展示1.管理员登陆2.主页面3.添加会员卡4.存款管理5.消费管理6.会员资料查询7.会员资料修改7.会员卡禁用、挂失三、系统实现1.StudentFrame .java四、其它1.其他系统实现一、系统介绍 该系统实现了管理员系统登陆、售…

四大领先优势加持,华为云会议服务更省心可靠!

  随着数字化转型的加速,随时随地视频沟通和数据协作的工作方式加速走进各行各业,并衍生出丰富的行业应用场景。云会议融入到了行业的增值和业务创新中,如在线办公,在线教育,远程会诊,金…

T-SQL程序练习01

目录 一、编写T-SQL程序,计算 1 2 − 3 4 − 5 … − 99 100 ? 二、写一个求三个数最大值的函数,输入为三个整数,输出为其中的最大值。 三、写一个T-SQL函数 𝑓𝑎𝑡,利用标准体重计算公式…

华为云桌面,数字化时代便捷、安全的办公选择

在当今效率优先、信息技术高度发展的时代,云桌面作为一种帮助企业实现快速办公上云的云服务,将应用于企业日常办公中,它不仅能够提升工作效率,而且还具有良好的扩展性和可扩展性,因此备受业界关注。 其中,华…

太难了!自学编程转行经历分享

本人坐标武汉,双非机电专业背景出身,求职目标互联网行业。 其实机电专业在整个机械大类里算是好就业一点的了,毕竟会涉及到单片机和PLC,随着物联网以及智能制造的发展,前景比传统的机械专业还是要好很多。&#xff08…

PGP邮件加密软件的使用

一、实验目的及要求 1.熟悉公开密钥密码体制,了解证书的基本原理,熟悉数字签名; 2.熟练使用PGP的基本操作,能对邮件或传输文档进行加密; 二、实验内容 1.创建一私钥和公钥对 使用PGPtray之前,需要用PGPkey…

【架构师(第五十二篇)】 几个前端工具的基本使用

前端截图 html2canvas 基本用法 import html2canvas from html2canvas const screenshot () > {// 获取需要截图的 dom 节点const el document.getElementById(target-id)// 第一个参数是节点,第二个参数是一些配置// 默认是不对跨域资源做处理, 需要添加额外的配置 use…

绿色高效办公,华为云桌面不可或缺

在互联网高速发展的今天,互联网应用已经成为人们日常生活中不可或缺的一部分。随着网络技术的不断成熟,越来越多的人开始使用云桌面作为工作平台来满足自己对高效便捷工作的需求,而其中最为典型的就是企业内部远程协同办公系统。 那么什么是云…

InnoDB详解 (1)

文章目录1 InnoDB详解 (1)1 概念介绍2 页介绍1 页内部结构介绍1 File Header(文件头部)(38字节)2 File Trailer(文件尾部)(8字节)3 Free Space (空闲空间)4 U…

十、51单片机之步进电机

1、什么是步进电机 1.1、外观 1.2、概念 (1)步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。因此&am…

VSCode调试C/C++项目

最近写完了自己的操作系统,深感有一个方便的调试环境是有多么重要,能够提升不少开发效率。恰好最近在的技术交流群里群友在问如何搭建VSCode调试操作系统的环境,刚考完试,就先把这篇VSCode调试C/C的通用教程发出来,而后…

Hadoop综合项目——二手房统计分析(MapReduce篇)

Hadoop综合项目——二手房统计分析(MapReduce篇) 文章目录Hadoop综合项目——二手房统计分析(MapReduce篇)0、 写在前面1、MapReduce统计分析1.1 统计四大一线城市房价的最值1.2 按照城市分区统计二手房数量1.3 根据二手房信息发布…

全网首发“Java面试考点大全”,20+互联网公司,应有尽有

受疫情影响,今年似乎给人感觉时间比往年还要流逝得更快。显然,春节一过,我们又将迎来面试旺季金三银四。对于程序员来说,秋招的失利更意味着在金三银四要打一场“硬战”,可又有多少人做好了面试的准备呢?对…