任务目的

这一步会介绍通过Python中的MyQR包实现生成二维码的操作,包括生成普通二维码、带有静态图和动态图的二维码,同时也会对MyQR生成二维码的常用参数进行介绍说明。

任务步骤注:CVM适合用于搭建远程服务器,但是如果在CVM中直接进行图片的访问工作,需要先进行一些相关的配置。等到接下来需要构建服务器进行测试时,再通过CVM构建完整的Web项目。

这一步为了聚焦在MyQR的使用和实现,在本地的Windows环境中展示图片二维码的生成环节。这一步需要用到Python和MyQR,但暂时不会用到Flask项目。

1.Windows环境配置

Windows环境中的Python环境配置流程如下:

(1)下载并安装Python

访问 Python官方网站 ,或点击下方的下载链接完成 Python for Windows 软件下载。注:完成此教程时,最新版本为Python3.8.1,下方提供的链接均为此版本。

下载完成后打开软件,并依据提示进行安装。

安装前切记勾选Add Python to PATH,将Python添加到环境变量中:4-3-1 Window中安装Python

(2)使用pip安装MyQR

打开命令行软件(命令提示符、PowerShell或其他终端,本例中使用PowerShell进行实验),安装MyQR:4-3-2 Windows环境配置使用Windows键 + R键打开 “运行” 界面

输入powershell,然后按下回车键打开PowerShell终端

执行MyQR安装命令:pip install myqr

执行MyQR安装命令:pip install myqr

完成环境配置,退出终端注:区别于CVM中的pip3命令,此处的安装命令使用pip。官方自2020年1月1日已停止对Python2的更新和技术支持,所以新版本中python和pip默认表示原来的python3和pip3。

而在CVM实验中使用的CentOS发布于Python2停止技术支持以前,所以默认沿用了过去的命令调用方式——即使用python3和pip3表示Python3的解释器和包管理器。

2.准备图片

下面的实验需要用到一些图片,用于制作图片二维码。支持的格式有:bmp、jpg、png、gif。虽然使用任意长宽比的图片都可以完成实验操作,但为了避免生成的二维码中图片被拉伸,此处建议使用正方形图片与二维码结合。

演示项目中已经准备好了一些正方形图片,并存储在images目录下,用于进行接下来的演示。注:此实验目录需要用户手动创建。建议用户选择一个不含中文的路径作作为实验路径,然后在此路径下新建一个名为images的目录。4-3-3 准备的图片

示例图片下载地址:

3.生成普通二维码

这一步将会使用MyQR生成一个不含图片的普通的二维码。

生成普通二维码的流程如下:

(1)打开Windows文件资源管理器,进入图片文件夹images的所在目录,打开命令行软件(命令提示符、PowerShell或其他终端,本例中使用PowerShell进行实验)。使用命令python进入Python3交互终端,下面的命令运行在Python3的交互终端中。注:想要在指定目录下打开命令提示符,可以先进入对应目录,按下shift键不放,然后按下鼠标右键,在展开的菜单栏中选择需要使用的命令行软件。

如使用 PowerShell,即选择 “在此处打开 PowerShell 窗口” 。展示效果如下:

4-3-4 在指定目录打开命令行软件

(2)从MyQR中导入myqr模块from MyQR import myqr

(3)生成包含链接的普通二维码myqr.run("https://cloud.tencent.com/")

此处仅添加了一个必需参数words,类型为字符串(目前仅支持数字、英文和常用符号,输入中文或其他文字将会报错),对应扫描二维码后展示的链接或文本内容。

此例中以"https://cloud.tencent.com/"作为words参数的值,即扫描二维码后,将会访问此链接。

生成成功后,会返回一个元组,类似下面的格式:(4, 'H', 'D:\\qrcode.png')

其中包含三个元素,分别对应二维码的边长(可加脚注)、纠错等级(可加脚注)和存储路径。

进入图片的导出路径,可以看到导出的图片文件qrcode.png,打开文件,可以看到生成的普通二维码文件:4-3-5 生成的二维码文件

打开文件,扫描图片上的二维码,确认可以成功进入腾讯云首页。说明普通二维码生成成功。

4.生成包含图片的二维码

无需退出终端,继续执行下面的操作即可。

(1)在生成二维码的函数中,额外添加一个参数picture,参数的值为图片的路径:myqr.run("https://cloud.tencent.com/", picture="cloud_jpg.jpg")

返回的结果同样会生成图片的相关信息,根据图片的导出路径,可以获取到图片所在位置。打开图片,看到生成的图片展示效果如下:4-3-6 生成黑白二维码

这张二维码图片不仅包含了需要访问的链接信息,同时还合并了参数picture中的图片对象,生成了一张包含图片的二维码。

扫描生成的二维码,同样可以顺利进入腾讯云首页,说明图片二维码生成成功。

但是需要注意:如果只是指定了图片参数,默认生成的二维码为黑白格式。

如果希望生成彩色的图片二维码,还需要在myqr.run()函数中额外添加参数 colorized=True,此参数的作用是指定生成的二维码格式为彩色。

尝试执行命令:myqr.run("https://cloud.tencent.com/", picture="cloud_jpg.jpg", colorized=True)

这次将会生成包含图片的彩色二维码,新的二维码展示效果如下:4-3-7 生成彩色二维码

访问导出路径打开图片,这次的二维码与上一次包含内容和图片均一致,唯一区别在于图片由黑白变成了彩色。

尝试扫描二维码,确认可以顺利进入腾讯云首页,说明彩色图片二维码生成成功且有效。

需要注意:如果按照上面的代码进行操作,会发现生成彩色二维码后,原来的黑白二维码消失了。这是因为使用图片生成二维码时,如果没有指定生成的图片名称,默认会使用 <原图片名>_qrcode.png作为生成的文件名。两次测试使用的是同一张图片,所以新生成的彩色二维码文件,会覆盖掉原有的黑白二维码文件。

如果希望能够指定文件的存储名称,可以在myqr.run()函数中添加参数save_name,对应的参数值即为生成的图片二维码文件名。

这次尝试通过指定文件名,重新生成一个名为cloud_black_white.jpg的黑白二维码(生成黑白二维码无需再添加colorized参数):myqr.run("https://cloud.tencent.com/", picture="cloud_jpg.jpg", save_name="cloud_black_white.jpg")注:图片名称可以相对添加路径,保存时将会自动识别路径并存储到对应路径下(需要提前创建路径)。

根据生成的链接访问路径,发现对应的图片二维码已经生成,且可以正常访问,说明指定文件名生成图片二维码的操作执行成功。注意:指定生成二维码文件名称的同时,还需要指定文件的后缀。

生成黑白图片时,后缀名与源文件名保持一致即可;

生成彩色图片时,源文件后缀为.jpg的图片,生成文件的后缀需要修改为.bmp, .png 或 .gif,否则将会报错。这是由于合成二维码需要支持Alpha色彩空间,即图片的透明度。

JEPG格式的文件不支持此参数,无法用于进行彩色图片与二维码合并。gif图片同样不支持,但MyQR中对gif格式的图片进行了额外的判断处理。

对于gif动态图,生成的流程与上方流程一致,如果需要指定保存文件名,记得设置文件名后缀为.gif:myqr.run("https://cloud.tencent.com/", picture="pic_gif.gif", colorized=True, save_name="gif_qrcode.gif")

此处使用的源图片为pic_gif.gif,生成的二维码为彩色,保存的文件名为gif_qrcode.gif。注:对于细节比较丰富的图片或动态图,生成二维码的所需时间会明显增加,且二维码包含内容越多,生成所需的时间越久。如果执行命令后没有立即返回结果,是因为二维码正在合成,此时请耐心等待。

生成的彩色动态图二维码展示效果如下:4-3-8 生成动态图二维码

扫描生成的二维码,确认可以成功跳转到腾讯云主页面,证明动态二维码生成成功。

5.myqr.run()函数中的参数说明:

参数说明类型可选值默认值words二维码指向链接或文本(必填)。str数字 0 到 9;大小写的英文字母;常用英文标点符号和空格无

version边长。范围是1~40,值越大边长越大。默认的边长取决于"words"的长度和纠错等级。int1~401

level纠错等级,即二维码的纠错能力,从低到高依次为"L", "H", "M", "Q"。纠错等级越高,纠错能力也相应提高,但由于数据量会随之增加,编码尺寸也也会变大。str"L", "H", "M", "Q""H"

picture与二维码进行结合的图片,支持的图片格式为.jpg, .png, .bmp, .gifstrNone

colorized颜色。默认为黑白,设置值为True可以将图片变为彩色。boolTrue, FalseFalse

contrast对比度。默认值为1.0,值越小对比度越低,值越大对比度越高。float1.0

brightness亮度。默认值为1.0,值越小亮度越低,值越大亮度越大。float1.0

save_name输出文件名。如果没有指定,默认生成文件名为qrcode.png。strqrcode.png

save_dir存储位置。默认存储在当前目录。stros.getcwd()

python生成二维码教程_使用Python生成个性二维码相关推荐

  1. python的图书管理项目教程_基于python图书馆管理系统设计实例详解

    写完这个项目后,导师说这个你完全可以当作毕业项目使用了,写的很全,很多的都设计考虑周全,但我的脚步绝不止于现在,我想要的是星辰大海!与君共勉! 这个项目不是我的作业, 只是无意中被拉进来了,然后就承担 ...

  2. python的pandas包使用教程_「Python」pandas入门教程

    pandas适合于许多不同类型的数据,包括: 具有异构类型列的表格数据,例如SQL表格或Excel数据 有序和无序(不一定是固定频率)时间序列数据. 具有行列标签的任意矩阵数据(均匀类型或不同类型) ...

  3. python图形化编程 在线教程_使用Python Editor进行在线图形化编程

    先介绍使用Python Editor进行在线开发newbit(microbit)的方法,这也是官方推荐的方法之一.Python Editor是一个在线的开发环境,所以需要连接网络才能使用. 首先打开浏 ...

  4. python自制简易二维码代码_用python把自己的二维码制作成动态码,一行代码即可搞定!敲简单!...

    分享一个比较有意思的项目,只需要一行Python代码就可以快捷方便生成普通二维码.艺术二维码(黑白/彩色)和动态GIF二维码. 用法比较简单,直接通过pip安装即可. pip3 install myq ...

  5. python查找文字在图片中的位置_图片转文字、二维码互转链接、查找不懂写的字...

    我们是一个为大家搜罗一些简单.常用又免费的办公应用的公众号,主要有识别图片中的字体转文字:二维码转链接,链接生成二维码:以及当你不懂写某个字时,通过查词组的方式找出那个字. 1.图片转文字 有时候我们 ...

  6. python 二维数组心得_基于python 二维数组及画图的实例详解

    python中如何使用二维数组 在Python中,一个像这样的多维表格可以通过"序列的序列"实现.一个表格是行的序列.每一行又是独立单元格的序列.这类似于小编们使用的数学记号,在数 ...

  7. python画二维数组散点图_基于python二维数组及画图的实例详解

    基于python二维数组及画图的实例详解 下面小编就为大家分享一篇基于python 二维数组及画图的实例详解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 1.二维数组取值 注:不管 ...

  8. python异步教程_【Python 异步编程入门】

    本文是写给 JavaScript 程序员的 Python 教程. Python 的异步编程,其他人可能觉得很难,但是 JavaScript 程序员应该特别容易理解,因为两者的概念和语法类似.JavaS ...

  9. python flask源码解析_用尽洪荒之力学习Flask源码

    [TOC] 一直想做源码阅读这件事,总感觉难度太高时间太少,可望不可见.最近正好时间充裕,决定试试做一下,并记录一下学习心得. 首先说明一下,本文研究的Flask版本是0.12. 首先做个小示例,在p ...

最新文章

  1. java线程模拟生产者消费者问题
  2. Silverlight+WCF 实战-网络象棋最终篇之解决重复的消息提示(八)
  3. Node.js 体验-在Windows Azure工作者角色上托管Node.js
  4. cmake 头文件 库文件 路径搜索 CMAKE_INCLUDE_PATH CMAKE_LIBRARY_PATH
  5. 设计模式-建造者模式(转自:http://www.cnblogs.com/cbf4life/archive/2010/01/14/1647710.html)...
  6. RabbitMQ配置Mqtt协议
  7. mse函数(均方误差函数)
  8. adc采集出来一段波形 如何求周期与频率_DMA+ADC快速采集直流无刷电机电流
  9. matlab读取写音频文件
  10. Java编程练习题3
  11. 制作纯净版WinPE2.0
  12. 电压/电流转换电路(类似于板子上的电路) op + 三极管
  13. 小程序canvas输出gif格式的图片作为表情
  14. 超链接 与众不同的鼠标滑过超链接下划线动画效果
  15. 有个空间,名叫 Gamma
  16. 【多功能改进】基于OpenCV图像采集的人脸识别网络推流及局域网无线控制系统(将图像在URL地址上输出,可做成网络摄像头,带识别框)
  17. 使用阿里云数据库RDS不得不知的注意事项
  18. 占用栅格地图(occupancy grid map)
  19. chrome浏览器本地信息的获取与设置
  20. statsby: 不用循环语句的循环

热门文章

  1. bigdicmal除法精度设置_使用java求高精度除法,要求保留N位小数
  2. zip包怎么解压oracle,使用jar与zip压缩解压文件的区别
  3. 知乎zhihu:Python爬取某个问题下所有含有给定关键词的回答
  4. Android任务栈的理解
  5. 史上最全的Linux命令汇总(全网最全)
  6. php为网页更改颜色,php如何设置网页颜色?
  7. 量子计算(九):复合系统与联合测量
  8. linux iscsi 发起程序,设置iSCSI的发起程序(客户端)(三)
  9. 原子战舰与8266代码理解(while循环后直接加分号)
  10. 网络计算机输入网络凭据,Win10访问局域网电脑提示需要输入网络凭证怎么办?