用 Python 制作各种用途的二维码-程序员宅基地

0726bde86c259626a99f3eef64733bbf.png

7f0cf7c8849862969b5715565f7ab548.jpeg

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

有趣的事实

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

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

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

开始

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

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

pip install segno
import segno
price_tag = segno.make("£9.99")
price_tag.save("Price Tag.png")

6ba8f89ebddfd2935a85fbb0e7fa03c3.png

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

用于分享URL的QR码

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

import segno
video = segno.make('https://youtu.be/px6FeOKD3Zc')
video.save('Video.png', scale=4)

3cb7522cff3be757956e052977ef149a.png

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

pip install qrcode-artistic
import segno
piet = segno.make('https://esolangs.org/wiki/Piet', error='h')
piet.to_artistic(background="background.png", target='Piet.png', scale=16)

9e7b8a42710061e8437af4db08287ea8.png

携带WIFI详细信息的QR码

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

import segno
wifi_settings = {
    ssid='(Wifi Name)',
    password='(Wifi Password)',
    security='WPA',
}
wifi = segno.helpers.make_wifi(**wifi_settings)
wifi.save("Wifi.png", dark="yellow", light="#323524", scale=8)

bf841aa148254fa6bd579e7504c5175c.png

联系信息的二维码

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

import segno
vcard = segno.helpers.make_vcard(
    name='Pxxx;Jxxx',
    displayname='Times Tables Furniture',
    email=('[email protected]'),
    url=[
        'https://www.etsy.com/uk/shop/TimesTablesFurniture',
        'https://www.facebook.com/profile.php?id=100083448533180'
    ],
    phone="+44xxxxxxxxxx",
)
img = vcard.to_pil(scale=6, dark="#FF7D92").rotate(45, expand=True)
img.save('Etsy.png')

3444685e68a14b1aa12b659a48475a4c.png

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

import segno
awsom = segno.helpers.make_vcard(
    name='Fison;Pete',
    displayname='AWSOM Solutions Ltd.',
    email=('[email protected]'),
    url=[
        'https://twitter.com/awsom_solutions',
        'https://medium.com/@petefison',
        'https://github.com/pfython'
    ],
    phone="+44xxxxxxxxxx",
)
awsom.to_artistic(
    background="logo.png",
    target='AWSOM.png',
    scale=6,
    quiet_zone="#D29500"
)

0c7bc4e9466aeeae3962bef42a4db433.png

用于其他目的的二维码

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

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

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

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

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

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

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

import segno
beatle = segno.make('Paul McCartney')
beatle = qrcode.to_pil()
import segno
import io
beatle = segno.make('Paul McCartney')
buff = io.BytesIO()
beatle.save(buff, kind='svg')

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

from urllib.request import urlopen
import segno
beatle = segno.make('Ringo Starr', error='h')
url = 'https://media.giphy.com/media/HNo1tVKdFaoco/giphy.gif'
bg_file = urlopen(url)
beatle.to_artistic(background=bg_file, target='ringo.gif', scale=10)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 个人视频信息/提醒。

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

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

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

好了,这就是今天分享的全部内容,喜欢就点个吧~


推荐阅读:

入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径

干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影

趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!

AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影

小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!

年度爆款文案
1).卧槽!Pdf转Word用Python轻松搞定!
2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃
3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密 
4).80行代码!用Python做一个哆来A梦分身 
5).你必须掌握的20个python代码,短小精悍,用处无穷 
6).30个Python奇淫技巧集 
7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货 
8).再见Python!我要学Go了!2500字深度分析!
9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片

点阅读原文,看B站50个Python实战视频!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cainiao_python/article/details/128424021

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签