当前位置: 欣欣网 > 码农

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

2024-06-29码农

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码相关操作。

    文章精选

    「Rust

    关注公众号并回复 「qrtool」 获取源码地址