命令行中打印二维码

news2025/4/7 7:25:31

前公司中登录设备时,需要下发密钥,密钥是通过扫描终端中的二维码获得的,终端中的二维码类似这样:

当时没理解原理,现在研究了下如何在命令行中打印二维码。主要介绍其中一些开源工具:

1. qrencode

简介

qrencode 是一个广泛使用的命令行工具,用于将文本数据编码为二维码。它支持多种输出格式,包括终端显示、PNG图片和EPS矢量图。

安装

在不同操作系统上的安装方法:

  • Ubuntu/Debian:

    sudo apt-get update sudo apt-get install qrencode
  • macOS (通过 Homebrew):

    brew install qrencode
  • Windows: 比较麻烦,需要编译,或者可以尝试 Chocolatey 安装。

使用示例

  • 在终端显示二维码:

    qrencode -t ANSI "https://www.example.com"
  • 生成 PNG 图片:

    qrencode -o example.png "https://www.example.com"
  • 生成 EPS 文件:

    qrencode -o example.eps -t EPS "https://www.example.com"

2. TermQR

简介

TermQR 是一个专为终端设计的二维码生成工具,能够在命令行中以ASCII字符形式显示二维码,适合在纯文本环境下使用。

安装

TermQR 可以通过 GitHub 获取并安装:

git clone https://github.com/edoardottt/termqr.git cd termqr make sudo make install

使用示例

termqr "https://www.example.com"

3. qrcode (Python 库)

简介

qrcode 是一个用 Python 编写的库,可以方便地在命令行中生成二维码。它支持多种输出格式,包括终端显示和图片文件。

安装

确保已安装 Python,然后使用 pip 安装:

pip install qrcode[pil]

使用示例

  • 生成并在终端显示二维码:

    import qrcode 
    import sys 
    
    qr = qrcode.QRCode() 
    qr.add_data("https://www.example.com") 
    qr.make(fit=True) 
    qr.print_ascii()
  • 生成 PNG 图片:

    import qrcode 
    img = qrcode.make("https://www.example.com") 
    img.save("example.png")

4. zint

简介

zint 是一个功能强大的条码生成器,支持多种条码格式,包括二维码。它适用于需要生成多种条码类型的用户。

安装

在不同操作系统上的安装方法:

  • Ubuntu/Debian:

    sudo apt-get update sudo apt-get install zint
  • macOS (通过 Homebrew):

    brew install zint
  • Windows: 可以从 zint 的官方网站 下载预编译的二进制文件。

使用示例

  • 生成二维码 PNG 图片:

    zint -d "https://www.example.com" -o example.png -b 20

  • 在终端显示二维码(需要配合其他工具,如 ASCII 转换): 由于 zint 本身不直接支持 ASCII 输出,可以结合 zint 和 catimg 等工具使用。

5. ascii_qr

简介

ascii_qr 是一个专门用于生成ASCII艺术二维码的工具,适合在纯文本环境中显示二维码。

安装

可以通过 GitHub 获取并安装:

git clone https://github.com/bronson/ascii_qr.git cd ascii_qr make sudo make install

使用示例

ascii_qr "https://www.example.com"

6. qr (Go 语言实现)

简介

qr 是一个用 Go 语言编写的简单命令行二维码生成工具,支持终端显示和图片输出。

安装

确保已安装 Go,然后使用 go get 安装:

go get github.com/Baozisoftware/qrcode-terminal-go

使用示例

qr "https://www.example.com"

比较表

工具语言输出格式特点安装难易度
qrencodeCANSI、PNG、EPS功能全面,支持多种输出格式简单
TermQRC++ASCII专为终端设计,适合纯文本环境中等
qrcodePythonASCII、PNG等易于集成到Python脚本中,灵活性高简单
zintC多种图像格式支持多种条码类型,功能强大简单
ascii_qrCASCII专注于ASCII艺术二维码,简单易用中等
qr (Go)GoASCII、PNG简单快速,适合Go开发者中等

选择建议

  • 需要多种输出格式qrencode 和 zint 是不错的选择,功能全面,支持多种图像格式。
  • 纯文本环境下显示TermQR 和 ascii_qr 专为终端设计,能够以ASCII字符显示二维码。
  • Python 集成:如果您使用Python进行开发,qrcode 库提供了灵活的接口,适合脚本化生成二维码。
  • Go 语言用户qr 工具适合Go开发者,简单快速。

示例演示

使用 qrencode 在终端显示二维码

qrencode -t ANSI "https://www.example.com"

这是我在我的openwrt路由器中输出的效果

 

使用 qrencode 生成 PNG 图片

qrencode -o example.png "https://www.example.com"

生成的 example.png 将包含对应的二维码图像。

结论

在命令行中生成二维码有多种开源工具可供选择,您可以根据具体需求选择最适合的工具。无论是需要多种输出格式、在终端中显示,还是集成到脚本中,都能找到合适的解决方案。上述工具均为开源项目,您可以根据自己的需求进行进一步的定制和扩展。

如果您有其他推荐或使用经验,欢迎在评论区分享!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android车机DIY开发之软件篇(八)单独编译

Android车机DIY开发之软件篇(八)单独编译 1.CarLauncher单独编译 CarLauncher源码位于 packages/apps/Car/Launcher 用Eclipse ADT 谷歌定制版编译而成,.mk .bp编译 Android13目录如下: alientekalientek:~/packages/apps/Car$ ls Calendar …

3 前端: Web开发相关概念 、HTML语法、CSS语法

文章目录 前言:导学1 Web开发相关概念2 Web标准(网页标准)3 软件架构(CS/BS)(1)C/S: Client/Server 客户端 / 服务器端(2)B/S: Browser/Server 浏览器 / 服务器端VSCode配置前段开发环境一、HTML概念1 概念2 HTML快速入门(1)语法快速入门(2)VSCode一个 !(快捷键…

Redis:内存管理

1. 最大内存限制 (maxmemory) 简介 概念:maxmemory 参数用于设置 Redis 实例允许使用的最大内存量。作用:当 Redis 使用的内存达到这个限制时,它会根据配置的淘汰策略来决定如何处理新的写入请求或移除现有数据。示例 # 设置最大内存为2GB maxmemory 2gb注意事项 合理规划…

C语言进阶——1数据的存储

目录 1. 数据类型介绍1.1 类型的基本归类:1.1.1 整形家族1.1.2 浮点型家族1.1.3 构造类型:1.1.4.指针类型1.1.5 void 表示空类型(无类型) 2. 整形在内存中的存储2.1 原码、反码、补码2.1.1 示例 20在计算机中的存储 2.2 大小端2.2…

OpenAI 故障复盘 - 阿里云容器服务与可观测产品如何保障大规模 K8s 集群稳定性

本文作者: 容器服务团队:刘佳旭、冯诗淳 可观测团队:竺夏栋、麻嘉豪、隋吉智 一、前言 Kubernetes(K8s)架构已经是当今 IT 架构的主流与事实标准(CNCF Survey[1])。随着承接的业务规模越来越大,用户也在使…

【微服务】面试 1、概述和服务发现

微服务面试题 课程内容架构 Spring Cloud 部分 服务注册:重点讲解(Nacos)和(Eureka),这是微服务架构中实现服务发现与注册的关键组件,确保服务间能够相互定位与通信。负载均衡:涵盖…

Mybatis冲冲冲00(含如何配置模版文件)

官方网站:mybatis – MyBatis 3 | 入门 mybatis安装方式1.下jar包(网址在上),2.Maven(代码也由上可找) 两个核心配置文件 1.核心主配置文件:configuration.xml(文件名自定义),通常设置为mybatis-config.xml 2.SQL映射文件:mapper.xml(文件名自定义),通常设置为:实体类名.xml…

【Rust】引用与借用

目录 思维导图 1. 引用与借用的基本概念 1.1. 引用示例 2. 借用的规则 2.1. 可变借用示例 2.2. 借用的限制 3. 引用的生命周期 思维导图 1. 引用与借用的基本概念 引用的定义:引用是一种指向数据的指针,但与裸指针不同,Rust的引用在编…

django网上商城系统

Django网上商城系统是一种基于Django框架构建的电子商务解决方案,它充分利用了Django框架的强大功能,为开发者提供了一个快速构建在线商店的平台。 一、系统架构与技术栈 Django网上商城系统采用MVC(模型-视图-控制器)架构&…

Node.js - 模块化与包管理工具

1. 前言 模块化是代码组织的方式,而包管理工具是管理模块的工具。在现代项目开发中,模块化和包管理工具几乎是不可分割的一部分,它们一起构成了高效的开发工作流。 包代表了一组特定功能的源码集合,包管理工具可以对包进行下载安…

贪心算法汇总

1.贪心算法 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 如何能看出局部最优是否能推出整体最优 靠自己手动模拟,如果模拟可行,就可以试一试贪心策略,如果不可行,可能需要动态规划。 如何验证可不可以…

leetcode-最长递增子序列

300. 最长递增子序列 - 力扣(LeetCode) 动态规划的题目我真的不想看题解,题解都是直接推出来动态转移方程,我就很纳闷,到底是怎么推出来的呢?什么样的智慧,上来分析问题就是那么的清晰有条理。我…

Qt 5.14.2 学习记录 —— 십일 QLCDNumber、ProgressBar、QCalendarWidget

文章目录 1、QLCDNumber2、ProgressBar3、QCalendarWidget 1、QLCDNumber 写一个倒计时程序。拖一个LCD Number到界面: 定时器用Qt的QTimer类,这个类的对象会产生一个timeout信号,通过start方法来开启定时器,并且参数中设定触发ti…

VDN 微服务架构搭建篇(二)服务注册与配置中心Nacos

VDN 微服务架构搭建篇(二):服务注册与配置中心 Nacos 本文将介绍如何使用 Spring Cloud Alibaba 和 Nacos 搭建服务注册与配置中心,重点讲解如何实现微服务架构中的服务发现、自动注册、配置管理以及动态配置刷新等功能。通过整合…

高等数学学习笔记 ☞ 单调性、凸凹性、极值、最值、曲率

1. 单调性 1. 单调性定义:设函数在区间上有定义,对于区间上任意两点,若: ①:当时,恒有,则称函数在区间上单调递增。 ②:当时,恒有,则称函数在区间上单调递减…

38家医药股回购,9家注销,丽珠集团公告犯低级错误

作者 庄泽 编辑 雨菲 2025年以来至1月10日,申万医药生物板块共有38家公司发布股票回购公告,其中包括介绍公司2024年股票回购情况,以及新发起股票回购事项等。 从回购股票用途来看,38家公司中,有26家回购股票用于股权激…

最近在盘gitlab.0.先review了一下docker

# 正文 本猿所在产品的代码是保存到了一个本地gitlab实例上,实例是别的同事搭建的。最近又又又想了解一下,而且已经盘了一些了,所以写写记录一下。因为这个事儿没太多的进度压力,索性写到哪儿算哪儿,只要是新了解到的…

GitLab本地服务器配置ssh和克隆项目

1. 本地安装好git git链接:https://git-scm.com/downloads/win 无脑点击下一步安装即可,打开Git Bash命令终端如下: 2. 配置本地用户名和邮箱 git config --global user.name "你的名字" git config --global user.email "你的邮箱&quo…

【2024年华为OD机试】 (A卷,100分)- 二元组个数(Java JS PythonC/C++)

一、问题描述 以下是题目描述的 Markdown 格式: 题目描述 给定两个数组 a 和 b,若 a[i] b[j],则称 [i, j] 为一个二元组。求在给定的两个数组中,二元组的个数。 输入描述 第一行输入 m,表示第一个数组的长度。第二…

中学综合素质笔记2

第一章职业理念 第二节学生观 考情提示: 单选题材料分析题 学习要求: 理解、 识记、 一、以人为本的学生观 (一)学生是发展的人——动态变化 学生的身心发展是有规律的(单选) 顺序性、阶段性、不平衡…