行早 发自 凹非寺
量子位 报道 | 公众号 QbitAI

你有没有见过彩色的,会动的二维码?比游戏还刺激的那种(狗头):

或者是保熟的二维码(不熟我把它吃了):

还有这个,当年要是被王司徒扫到了,肯定等不及在两军阵前发表高论就气倒了:

这些二维码虽然鬼畜了起来,但是并不影响它作为二维码的原始功能,不信可以试试,照样能扫出来~

这是一位名叫Lars heuer的小哥制作的一款二维码编辑器Segno,让黑白的二维码世界亮了起来,在GitHub上收获了200多颗星:

这款编辑器可以把二维码的背景换成不同的颜色,图片甚至是gif图片:

并且全部程序不需要任何依赖项,并且支持多种格式,快来康康。

如何给二维码换装?

要想给二维码换装首先我们得准备一个二维码还有一件“衣服”。

其中二维码可以通过函数生成,只需要填上你希望扫描二维码之后显示出的文字或者网址之类的信息。

“衣服”就是背景图啦,多种格式的图片和鬼畜动图都可以。

具体到操作层面应该怎么做呢?

Lars heuer准备了两个库:qrcode-artistic和Pillow。

我们先把这两个库装上:

pip install qrcode-artistic
pip install Pillow

然后用segno.make()生成一个二维码,在函数中填上扫描二维码显示出的内容。

有了生成函数之后,在转化函数qrcode.to_artistic,background之后输入你想要替换的背景,可以输入.png,.jpg,.gif等格式的图片。

最后在target之后给输出的二维码命名,方便在文件夹中找到。

等运行完毕,你就能在项目文件中找到带有各种背景的二维码了~

什么原理?

其实道理也很简单。

二维码能修改部分背景是因为二维码中不同的区域,承担不同的功能,并且可以自定义颜色。

例如很明显的一点,常见的二维码在三个角上有较大的像素块(标红),用来定位:

在三个大像素块旁边的黑色像素块(标红)用来设置格式信息:

而左下和右上两个大像素块旁边的黑色像素块(标红)用来确定版本信息等等:

因此,当我们自定义这些区域的颜色时,就可以改变二维码的背景了。

大开脑洞来试试吧,更细节的信息可以在文末链接中找到~

参考链接:

[1]https://github.com/heuer/segno
[2]https://segno.readthedocs.io/en/stable/colorful-qrcodes.html

这二维码鬼畜起来了,加颜色加插画还能加GIF相关推荐

  1. 生成二维码。且可调颜色

    controller代码如下: /** 生成二维码* */@GetMapping("/testEwm")@ResponseBodypublic void createQRCode( ...

  2. PC微信逆向:使用HOOK拦截二维码

    文章目录 微信版本 寻找微信二维码基址 PNG文件格式 使用CE过滤基址 使用OD确定二维码基址 验证二维码基址 寻找微信二维码内容的基址 微信二维码的存储内容 使用CE寻找二维码内容的基址 验证基址 ...

  3. HTML5 使用 JS 生成二维码,带头像

    一般在项目开发中,前端显示给用户扫描的二维码基本都是由后端代码生成的,那么这个高大上的功能能不能用 JS 来绘制呢? 答案是肯定的 首先我们需要一个插件 jquery.qrcode.js,该插件基于  ...

  4. 二维码的生成和解析原理

    二维码结构 1.版本信息:version1(21*21),version2,...,version40,一共40个版本.版本代表每行有多少模块,每一个版本比前一个版本增加4个码元,计算公式为(n-1) ...

  5. 二维码(微信二维码)缓存问题的解决方法

    背景:微信二维码扫码充值的时候,会给前端返回一个二维码图片的url,而当pc端的网络不好时,可能会导致界面上加载二维码图片特慢,甚至有明显的图片一帧一帧加载的痕迹.如果还没支付用户改变充值金额再次点击 ...

  6. 微信小程序分享生成海报(自带二维码)+头像+昵称

    前言: 我的分享海报是弹框,可根据自己要求写成页面,原理都是一样的,背景图是前期测试的,效果是OK的,真机测试手机也是显示的. 效果图: wxml: <!-- 生成海报 --><vi ...

  7. 以QRcode为例聊聊二维码的现状与未来(Java版本)

    并非标题党,前半段可能会用比较大的篇幅介绍QRcode的应用,后半段会写一些我对二维码的思考 参考:https://www.cnblogs.com/bigroc/p/7496995.html 文章目录 ...

  8. Python基于pyzbar、opencv、pyqt5库,实现二维码识别 gui 应用程序开发

    二维码组成结构基本介绍 二维码识别背景介绍 视觉的方法可以用来估计位置和姿态.最容易想到的是在目标上布置多个容易识别的特征,这样使用opencv相机标定和.相机畸变矫正.轮廓提取.solvepnp来获 ...

  9. opencv项目7---智能识别二维码和条形码

    利用opencv和一个摄像头设备即可实现智能识别二维码和条形码,用到的都是基础的opencv知识. 二维码和条形码的照片可以去网上自行搜索. 这个项目可以有很多扩展: 1:比如做成一个公司的二维码证件 ...

最新文章

  1. 5G最完整的PPT教材
  2. Android的全屏活动?
  3. hdu 3671 Boonie and Clyde
  4. SFTP是什么?与FTP之间有什么区别
  5. 利用Inception-V3训练的权重微调,实现猫狗分类(基于keras)
  6. 怎样增加Dave 英语学习小组
  7. 智能优化算法——遗传算法(C语言实现)
  8. android textview显示表情,Android开发-TextView中显示QQ表情类的图片和超链接
  9. MySQL和SQLyog安装配置教程
  10. Flash Builder 的概要分析
  11. 数据结构与算法书籍汇总(从小白到大神)
  12. java中ant_java ant使用详解
  13. 未来混合云的发展可能有两个方向 | 5G技术研发试验第三阶段规范正式发布
  14. Ubuntu16.04安装qq和微信(亲测 可用)附安装包下载链接
  15. 设计模式之禅学习总结
  16. Week4 常用类 麻了
  17. 从零开始单相在线式不间断电源(UPS)(硬件)
  18. Arthas(阿尔萨斯) 能为你做什么?
  19. 如何辨别物联网卡的真伪
  20. 域名该怎样选_独立博客取名该如何挑选域名

热门文章

  1. 【Python3之异常处理】
  2. 如何在Javascript中访问对象的第一个属性?
  3. 如何使用意图将对象从一个Android活动发送到另一个?
  4. 如何从Java中的字符串值获取枚举值?
  5. 一分钟经理“游戏图”提要
  6. 实用PS技巧分享,送给初入职场的你
  7. Tomcat 架构探索
  8. 总编下午茶:挑战者心态能否帮助微软重回云计算巅峰?
  9. phpversion() 与 phpinfo()
  10. Sealed,new,virtual,abstract与override的区别