天天看点

qrcode:基于Rust语言实现的二维码命令行工具

作者:不秃头程序员
qrcode:基于Rust语言实现的二维码命令行工具

QRtool是一款使用Rust语言编写的命令行工具,用于QR码的编码和解码。本文将详细介绍如何安装、使用QRtool,以及一些高级功能。

安装QRtool

QRtool可以通过多种方式进行安装:从源码安装、通过包管理器安装或者下载预编译的二进制文件。

从源码安装

你可以使用Cargo来安装QRtool:

cargo install qrtool           

通过包管理器安装

根据不同的操作系统,可以使用相应的包管理器进行安装:

  • Homebrew(适用于任何操作系统)
brew install sorairolake/tap/qrtool           
  • Nix(适用于任何操作系统)
nix-env -iA nixpkgs.qrtool           
  • Arch Linux
pacman -S qrtool           
  • openSUSE
zypper install qrtool           

从二进制文件安装

可以从release页面下载适用于Linux、macOS和Windows的预编译二进制文件。

使用QRtool

QRtool的基本使用非常简单,下面是一些常用的命令示例:

编码一个字符串为QR码

qrtool encode "QR code" > output.png           

这样会生成一个PNG格式的QR码图像并保存在output.png文件中。

从图像中解码QR码

qrtool decode output.png           

输出结果将是QR码中包含的字符串:

QR code           

高级用法

QRtool还支持生成SVG格式的QR码、自定义QR码颜色及格式、以及生成微型QR码等高级功能。

生成SVG格式的QR码

使用-t选项可以改变生成图像的格式,支持png(默认)、svg或者输出到终端的UTF-8字符串。

qrtool encode -o output.svg -t svg "QR code"           

自定义QR码的前景色和背景色

使用--foreground和--background选项可以改变生成图像的前景色和背景色,这些选项接受CSS颜色字符串,如brown、#a52a2a或rgb(165 42 42)。默认前景色是黑色,背景色是白色。

qrtool encode --foreground brown --background lightslategray "QR code" > output.png           

生成微型QR码

使用--variant选项可以改变QR码的变体,支持normal(默认)和micro(微型QR码)。

qrtool encode -v 3 --variant micro "QR code" > output.png           

支持的输入图像格式

QRtool支持从多种图像格式中解码QR码,包括:

  • BMP
  • DDS
  • Farbfeld
  • GIF
  • Radiance RGBE
  • ICO
  • JPEG
  • OpenEXR
  • PNG
  • PNM
  • QOI
  • SVG
  • TGA
  • TIFF
  • WebP

需要注意的是,如果要支持从SVG图像中解码QR码,必须在编译时启用decode-from-svg特性。SVG图像会在扫描前被栅格化。

qrtool decode input.webp
# 或者
qrtool decode -t webp input.webp           

生成Shell自动补全脚本

使用--generate-completion选项可以生成Shell的自动补全脚本。支持的Shell包括:

  • bash
  • elvish
  • fish
  • nushell
  • powershell
  • zsh

示例:

qrtool --generate-completion bash > qrtool.bash           

与其他程序的集成

QRtool可以通过stdin读取和通过stdout输出,使其能够与其他程序无缝集成。

优化输出图像

QRtool生成的图像未经过优化。例如,输出的PNG图像总是以32位RGBA格式存储。如果希望减少图像大小或优化图像,可以使用诸如oxipng或svgcleaner之类的优化器。

优化输出PNG图像:

qrtool encode "QR code" | oxipng - > output.png           

优化输出SVG图像:

qrtool encode -t svg "QR code" | svgcleaner -c - > output.svg           

读取和写入不受支持的图像格式

如果希望将编码后的图像保存为PNG或SVG之外的图像格式,或者解码不受支持的图像格式,可以使用如ImageMagick之类的转换工具。

从stdin读取Cargo.toml并将编码结果保存为JPEG XL图像:

cat Cargo.toml | qrtool encode | magick png:- output.jxl           

解码此图像并打印结果:

magick output.jxl png:- | qrtool decode | bat -l toml           

结论

QRtool是一个强大且灵活的工具,适合各种QR码编码和解码任务,无论是简单的字符串编码,还是高级的图像格式处理。希望本文能够帮助你更好地理解和使用QRtool进行QR码相关操作。

继续阅读