前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动态炫酷二维码怎么整?劳动节重新来搞搞这个公众号的敲门砖!

动态炫酷二维码怎么整?劳动节重新来搞搞这个公众号的敲门砖!

作者头像
Devops海洋的渔夫
发布2022-01-17 10:11:42
3170
发布2022-01-17 10:11:42
举报
文章被收录于专栏:Devops专栏Devops专栏

需求

一般在我们的公众号都会有二维码提供扫描,但是,一般的二维码可以满足我们那种奇思妙想的胃口么?当然不能,我们需要一个炫酷、吸引人的二维码!!!

下面来看看怎么制作!

基础环境

  • python3

我的环境则是采用 win10 + python3

二维码开源工具

Github地址:https://github.com/sylnsfar/qrcode

中文文档:https://github.com/sylnsfar/qrcode/blob/master/README-cn.md

使用这个工具,可以让我们轻松制作出不少好看的二维码,下面来开始制作步骤。

二维码制作安装

新建一个空的python3项目 qrcode_test

安装二维码工具库

代码语言:javascript
复制
# 通过 pip
pip(3) install myqr(or MyQR)

执行如下:

安装完毕之后,则可以执行 myqr 相关命令,如下:

代码语言:javascript
复制
(venv) D:\pythonProject\qrcode_test>myqr
usage: myqr [-h]
            [-v {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40}]
            [-l {L,M,Q,H}] [-p PICTURE] [-c] [-con CONTRAST] [-bri BRIGHTNESS]
            [-n NAME] [-d DIRECTORY]
            Words
myqr: error: the following arguments are required: Words

(venv) D:\pythonProject\qrcode_test>

普通二维码制作

示例1:使用一个Words制作一个普通二维码

代码语言:javascript
复制
myqr https://github.com

执行如下:

可以看到默认会将输入的Words内容转化输出到一个命名为 qrcode.png 的图片上。

查看生产的二维码图片,如下:

现在你扫描一下这个二维码,那么则会提供访问 https://github.com 的地址了。

参数说明:控制输出的图片名称以及文件路径

上面很多图片的信息都是采用默认,例如文件名 qrcode.png 、文件的后缀名 png 、文件的存储路径 等等。

但是其实我们大部分也不会太过在意,不过还是简单说明一下。

  • 默认输出文件名是“ qrcode.png ",而默认存储位置是当前目录。
  • 自定义:可以自己定义输出名称和位置。注意同名文件会覆盖旧的。 -n 控制文件名,格式可以是 .jpg.png.bmp.gif-d 控制位置。

艺术二维码

上面的普通二维码真的很普通,为了让二维码更加好看,我们可以搜索一下比较好看的背景图片,然后将二维码嵌入,这样就比较炫酷了吧。

示例2:参数-p 用来将QR二维码图像与一张同目录下的图片相结合,产生一张黑白图片。

首先我准备一张山水图作为背景图,如下:

执行命令如下:

代码语言:javascript
复制
myqr https://www.baidu.com/ -p bg1.jpg

效果如下:

但是我觉得这个效果不是很好看呢!!下面来一个彩色的看看。

示例3:加上参数 -c 可以使产生的图片由黑白变为彩色的。

代码语言:javascript
复制
myqr https://www.baidu.com/ -p bg1.jpg -c

效果如下:

恕我直言,我个人觉得还是不是很好看。下面来调整一下背景图的比例以及色调。

示例4:调整图片的对比度 以及 亮度

代码语言:javascript
复制
myqr https://www.baidu.com/ -p bg1.jpg -c -con 1.5 -bri 1.6
  • 参数-con 用以调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0
  • 参数 -bri 用来调节图片的亮度,其余用法和取值与 -con 相同。

效果如下:

稍微好看了一点点,但是各位有没有觉得二维码的那个三个正方形有些大?主要的原因是默认使用背景的图片边长较短,整体被压缩,导致很不协调。

下面来设置一下背景图的边长以及识别纠错的参数。

示例5:设置二维码边长以及纠错等级。

代码语言:javascript
复制
myqr https://www.baidu.com/ -p bg1.jpg -c -con 1.5 -bri 1.6 -v 15 -l Q
  • 默认边长是取决于你输入的信息的长度和使用的纠错等级; 而默认纠错等级是最高级的H。
  • 自定义:如果想要控制边长和纠错水平就使用 -v-l 参数。 -v 控制边长,范围是1至40,数字越大边长越大; -l 控制纠错水平,范围是L、M、Q、H,从左到右依次升高。

效果如下:

可以看出效果比较协调了吧。在这里要特别说明一下,这个 v 参数 和 l 参数是配置使用的,每次调整之后,最好都自己扫描一下二维码,确认能够识别出设置的内容信息,避免弄出一个不能使用的二维码。

动态GIF二维码

上面都是讲一些制作静态图片的二维码,还不够我们所谓的炫酷,真正的炫酷当然是要能够动起来,不然怎么炫!!

其实动态二维码与上述的带图片的二维码的生成方法没什么区别,你只要采用 .gif 格式的图片即可生成黑白或者彩色的动态二维码。但注意如果使用了 -n 参数自定义输出的文件名,切记其格式也必须是 .gif格式。

准备一张动态 gif 图片

这里我准备一张蜘蛛侠的动图。

编写生产二维码的代码

代码语言:javascript
复制
import os
from MyQR import myqr

def main():
    version, level, qr_name = myqr.run(
        words="https://www.baidu.com/",
        version=20, # 控制边长,范围是**1至40**,数字越大边长越大;
        level='H', # 设置图片的纠错等级 - 范围是**L、M、Q、H**,从左到右依次升高。
        picture='bg2.gif', # 设置背景图片名称:bg2.gif
        colorized=True, # 设置背景图片的色彩, False黑白, True彩色
        contrast=1.0, # 设置图片的对比度
        brightness=1.0, # 设置图片的亮度
        save_name=None, # 设置图片保存的名称
        save_dir=os.getcwd() # 设置图片保存的路径
    )

if __name__ == '__main__':
    main()

执行效果如下:

看看效果图,如下:

GIF图片过大问题

上面的确是已经做好了,但是这个二维码图片文件直接就非常大,下面来压缩一下。

安装pillow

代码语言:javascript
复制
pip install pillow

编写压缩图片的代码

代码语言:javascript
复制
from PIL import Image, ImageSequence
import sys, os

def compress(inf, outf):
    """
    :param inf: 需要压缩的原图片
    :param outf: 输出压缩后的图片
    :return:
    """

    gif = Image.open(inf)
    dura = gif.info['duration']
    imgs = [f.copy() for f in ImageSequence.Iterator(gif)]

    index = 0
    imglist = []
    os.mkdir("images")
    for frame in imgs:
        frame.save("./images/%d.png" % index)
        im = Image.open("./images/%d.png" % index)
        im.thumbnail((216, 216), Image.ANTIALIAS)
        imglist.append(im)
        index += 1

    os.remove("images")

    imglist[0].save(outf, 'gif', save_all=True, append_images=imglist[1:], loop=0, duration=dura)

if __name__ == '__main__':
    compress(inf="bg2_qrcode.gif", outf="bg2_qrcode_cp.gif")

其实原理步骤就是将 gif 的每一帧动画图片拆分放置到临时文件夹 images 中进行逐个压缩,最后再将这些图片重装为一个 gif 图片,达到压缩的效果。

压缩效果如下

可以看到 gif 图片被压缩到了 (216, 216) 的大小。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海洋的渔夫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求
  • 基础环境
  • 二维码开源工具
  • 二维码制作安装
    • 新建一个空的python3项目 qrcode_test
      • 安装二维码工具库
      • 普通二维码制作
        • 示例1:使用一个Words制作一个普通二维码
          • 参数说明:控制输出的图片名称以及文件路径
          • 艺术二维码
            • 示例2:参数-p 用来将QR二维码图像与一张同目录下的图片相结合,产生一张黑白图片。
              • 示例3:加上参数 -c 可以使产生的图片由黑白变为彩色的。
                • 示例4:调整图片的对比度 以及 亮度
                  • 示例5:设置二维码边长以及纠错等级。
                  • 动态GIF二维码
                    • 准备一张动态 gif 图片
                      • 编写生产二维码的代码
                      • GIF图片过大问题
                        • 安装pillow
                          • 编写压缩图片的代码
                            • 压缩效果如下
                            相关产品与服务
                            文件存储
                            文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档