在进行二维码美化前
1.1
二维码的原理
写具体教程前,我觉得还是很有必要来简单介绍一下二维码的原理!
因为我不止一次被这样问到过:“ 能不能把视频转成二维码?”、“能不能把音频转成二维码?”、“PDF如何生成二维码?”…
当然藏藏这里精简了这些粉丝的问法,他们是以为单纯靠二维码就能存储视频、音频、PDF等文件
“
但事实上,二维码仅能存储字符文本内容!
”
深究二维码工作的原理其实就是二进制算法。在我们眼中的各式各样、花里胡哨的二维码,在计算机的眼中事实上是像下图一样充斥着 0、1 代码
简单来理解就是:计算机读出了01代码,再对应上全球统一的信息交换标准,就能以文字的方式解读出二维码的内容了
▲ASCII编码表
当然可能有粉丝会问,既然文本、音频、视频等内容在计算机眼中都是01代码,那为什么二维码不能直接存储音频、视频等内容呢?
要藏藏通俗来解释一下就是:二维码能存储的数据量实在有限
我们来看看1KB的音频文件含有多少01代码的数据量:
▲1KB音频≈1000字节
然后我们再看看1000个字节能存储多少中文字符:
▲1000字节≈500字符
上图内容使用藏藏的AI星球内赠送的 Zelinai Pro 生成(支持 ChatGPT 基本功能以及Prompt训练、调参、一键搭建AI应用等服务,你可理解为国内版 ChatGPT)
然而二维码中所包含的文本长度决定了二维码画面的复杂度,仅仅长500字的二维码就已经相当之复杂了,再长的内容转换成二维码之后受限于图像分辨率则很容易识别不出来
当然,这里只是以数据量长度来让大家理解一下二维码为什么无法存储音视频等文件,最根本的原因是QR二维码只有4种标准化编码模式来存储数据:数字、字母与数字、字节(二进制)和日文(Shift_JIS),本身其就不支持存储音、视频等数据
所以统一回答下那些想把视频、音频、PDF生成二维码的粉丝,你们的这类需求只能将你想分享的文件上传到视频、音频、PDF分享平台之后,通过平台获取一个文件的分享链接,再把链接转换成二维码才能实现
当然,这里的分享平台有很多,比方说视频可以上传到爱奇艺、优酷、腾讯、B站、抖音等;PDF可以上传到百度文库、豆丁网、道客巴巴等…
而最通用的文件分享平台自然是各大网盘,百度云网盘、阿里云盘、天翼云盘等了
而极个别粉丝想的是扫描二维码之后就展示纯粹的文件内容(比如视频、音频可以直接播放),这种需要你首先能获取到视频、音频的文件直链才有可能,而你可能需要进一步去了解的是「对象存储」这个概念,但不要说藏藏没提醒你,很多人可都在对象存储的流量费用上亏过一大笔💸
1.2
对二维码内容进行简化
话说到这里你应该知道了二维码制作中很重要的一点:内容越短,生成的二维码才越容易识别
这事关到之后我们对二维码进行美化,过于复杂的二维码稍微对内容进行修改就有极大概率导致其无法被识别,所以我们首先就要尽可能简化二维码内容
但并非所有的二维码内容都适合简单化,也并非所有二维码都能够有效简化,这个要看内容。多数情况我们会用到的二维码内容通常就是以下 2 类:
微信号、抖音、小红书等社交平台二维码
网页链接、网盘分享链接等
对于各种社交平台账号二维码,解码出的内容基本上是一个包含官方域名的链接,单该链接一般只能被官方APP解析,且仅能通过扫码打开识别到(你将解码出的链接发给别人是不能打开的)
这类二维码只能通过降低容错率进行简化,但是因为其本身二维码的容错率就已经有 30% 了,即使降低到 7% 重新生成也对整体简洁度影响有限
容错率这个概念并不难理解:容错率 7% 的意思就是即使内容被遮挡了 7%,计算机依然能识别出二维码的内容。但容错率越高,二维码就会越复杂
所以事实上我们在美化二维码时最常需要做的是去掉网址中冗余的参数后缀
举例像百度的搜索结果网址:去掉地址 1 的黄色部分的内容后,地址 2 依然能正常访问。甚至将地址 2 中绿色部分内容进一步去除之后得到的地址 3 依然能正常访问
去掉各种&符号连接的内容并不影响地址1、2、3 访问到同一个页面
但是由于二维码复杂程度与内容长度息息相关,所以生成的二维码就可以大大简化(如下图)
不过也不是所有的链接都能像百度搜索结果这样进行简化,举个例来说像微软的一系列网页链接,都非常的长,而且无法通过删除链接中的内容来简化链接
这种情况我们就只能靠「网址缩短」服务来简化链接了,比方说下面我利用微博短链接生成的地址 2,实际访问时会自动跳转到地址1
当然使用这种方式会有缺点,如果短链接服务失效了,那么其生成的二维码便无法在扫描之后跳转到源链接了
所以我们尽可能要用长年稳定的短链接服务,关于这一点藏藏在之前的文章有专门介绍过,这里便不赘述了,可以点击下方卡片查看之前的文章
2
普通二维码美化
写了那么多,终于进入正题了,这里我们由俭入”奢”,先介绍一些上手即用的工具
2.1
Qrbtf
Qrbtf 参数化二维码生成器是一个完全免费的二维码制作网站
由作者 @ciaochaos 在2020年其大一时与同学一起开发,随后不久还将整个网站开源了,非常之良心:https://classic.qrbtf.com/
发展至今,网站已整整有 14 款二维码样式可选,藏藏文章一开头提到我更新了自己的公众号头像,就是用这个网站的C1样式轻松制作而成
<<左右滑动查看更多>>
整个网站几乎没有使用难度,输入文本或者网址,再点选你需要的二维码样式,紧接着调整二维码的各项参数,包括:容错率、定位点样式、定位点颜色、信息点样式、上传背景等等,调整到满意之后,即可下载生成的二维码
值得一提的是:此网站不仅支持生成 JPG、PNG 格式的二维码,还支持生成可任意无损放大的 SVG 矢量格式的二维码,对于想对二维码二次加工的设计师来说,非常有用!
另外此网站不仅能在电脑上使用,也适配了移动端访问,又可以省去安装一个不常用的 APP 了
并且你不必担心 Qrbtf 网站没有收入哪天停服了不能用,打开项目 Github 的 Release 页面下载 build.zip:https://github.com/ciaochaos/qrbtf
作者非常良心的提供了解压就可以直接本地使用的网页文件!和在线网页版一模一样~
2.2
qrcode
Qrbtf 提供的样式很多,也能制作半色调二维码(C1、C2样式),相信已经满足绝大多数人的需求,但它还有个很大的缺点——不支持动图!
如果你想要生成类似下面的半色调彩色动图二维码,藏藏在 4 年前的文章中介绍过的由 @sylnsfar 大佬开发的 qrcode 项目其实就是一个非常好的解决方案
但原项目软件使用时,填写参数的步骤过于复杂了,藏藏在 4 年前介绍时也没能考虑到这一点
不过现在我们有了 ChatGPT,为了让更多粉丝直接能上手使用,在 ChatGPT 的帮助下,我写了一点点代码,并将整个软件打包成了单文件版,让 qrcode 的易用性极大增强
现在使用 qrcode,你只需要:
输入二维码内容
拖入背景
决定是生成彩色还是黑白二维码(默认彩色,可不设置直接回车)
设置二维码大小(可不设置直接回车)
设置二维码容错率(可不设置直接回车)
设置二维码亮度(可不设置直接回车)
设置二维码对比度(可不设置直接回车)
是的,简单来说就是只必要设置1、2点的内容,剩下一直回车就可以生成艺术二维码了,生成的二维码会生成在背景同一目录下
不过需要特别说明的是,qrcode 有一大缺点是二维码内容不支持中文,但考虑到二维码的大多数生成场景都是链接,所以这个缺点应该还好
“二维码美化”
2.3
Halftone QR Codes
qrcode 生成的动态二维码已经算不错了,不过如果你要进一步追求二维码的美观程度,藏藏还是推荐使用由台湾国立清华大学发布的 Halftone QR Codes 项目
qrcode 纯粹像是直接把二维码颗粒覆盖到上,而 Halftone QR Codes 更像是把二维码融入到里,除了识别点看不太出别的二维码颗粒,要不别人怎么会写了一篇论文呢
▲Halftone QR Codes生成的动态二维码
论文地址:http://cgv.cs.nthu.edu.tw/Projects/Recreational_Graphics/Halftone_QRCodes/
而这个工具其实我也在 4 年前的文章中就介绍过,不过问题还是之前介绍的方案太复杂了,需要用到 UGA+VisualQRC+ShanaEncoder 三款软件
这次藏藏反反复复研究了一整天之后,得出了一个更优化的方案——VirtualDub+VisualQRC+ScreenToGif
之所以要用到 3 个软件,是因为用于生成动态二维码的 VisualQRC 有个没办法的缺点——不支持导入 GIF 图,只支持导入视频
但其对视频编码有要求,之前藏藏就测试了一众转码参数都不支持,依靠盲猜试错好不太容易才找到可以利用 UGA 来将 GIF 转为 AVI 视频导入
时隔几年再次研究,我才发现是由于这款软件使用 OpenCV 库所以需要导入的视频满足 MJPEG 编码与 RGB 32色彩格式,但又奇葩的是用 ffmpeg 转码得到上述标准的视频并依然不支持导入
我又花了很久才找到一个古老的开源工具 VirtualDub,用其转码的 GIF 终于是能被 VisualQRC 导入了,但我想着尽量减少大家的上手难度,又花了整整一天才摸索清如何通过命令行来调用这款软件,然后我进一步将 VirtualDub 制作成了单文件版工具
总而言之,现在你只要打开藏藏提供的 VirtualDub 转码工具,将 GIF 拖进命令窗口,就可以把其转换为 VisualQRC 能导入的 AVI 视频了
第二步,我们打开 VisualQRC,耐心等待软件启动之后,点击 Select Inputs 窗口左边区域,导入文件
然后手动将文件格式选为 AVI 这样就能打开我们刚刚用 VirtualDub 的视频了,将视频打开后,在弹出的窗口可以设置二维码内容、二维码大小(Version)和容错率(EC level),确认无误之后点击绿色箭头即可进行下一步
软件主界面虽然为全英文,但使用并不复杂:输出彩色二维码选项一定要点选⚠️,增强输出结果这个看个人需求,然后就是根据自己的需求进行锐化、对比度等设置,确认好之后点击左上角的齿轮图标来输出结果
在导出时,先弹出的那个窗口直接点OK即可,后面弹出的视频压缩窗口,将压缩程序改为全帧(非压缩的),最后点击确定,耐心等待输出完成即可
好了,现在我们已经得到了美化后的艺术二维码视频,最后一步——怎么把视频文件转换为GIF?
这里藏藏前后尝试了很多方法,最后觉得最好的办法还是用我反复推荐过的 ScreenToGif
将 AVI 视频直接拖入 ScreenToGif 后,可以自定义帧速度(也可以不自定义直接确定),然后按 Ctrl+A 全选所有帧,在 ScreenToGif 编辑栏目可以统一设置每一帧的时长
调整到令你满意之后,点击文件栏目即可将视频另存为 GIF 了
需要这一套工具的话,请关注微信公众号:藏藏同学,在公众号聊天窗口发送以下关键词,后台即会自动回复下载地址:
“
二维码美化
”
2.4
ArtQRCode
如果上述艺术二维码都不是你想要的,你想要制作的是类似下面的二维码:
从其根本原理来讲其实并不难,就是把原本二维码的黑色块,依次替换为其他的元素,这个在 Photoshop、Illustrator 等软件中操作起来并不复杂(就是费点时间)
Github 上的@252860883 基于 qrcode.js 封装了一个名为 ArtQRCode 的项目,可能让一般人也能快速制作这样的二维码:https://github.com/252860883/ArtQRCode
打开项目之后,我们直接将整个项目代码都下载下来,解压到本地
然后需要你自行根据固定比例进行设计,具体素材命名以及规范如下,作者有在项目中说明:
然后将这些素材放在项目中的 materials\electron 文件夹下
最后右键项目文件夹中的 index.html,右键打开方式,选择用IE浏览器打开,就能看到基于你设计的素材生成的艺术二维码了~
3
AI二维码美化
其实一些位粉丝应该能看得出来,这篇文章本打算是和上篇 AI 二维码一起介绍的,但写到后面发现文章实在是过长、内容过多了,就选择性拆分为两篇文章来发了
如果不满足普通二维码美化,想要你的二维码几乎看不出来是二维码,请转看我上一篇介绍的 AI 二维码美化这期文章