#qr #codec #decoding #command-line #output-image #terminal

app qrtool

用于编码或解码 QR 码的实用程序

47 个版本

0.11.4 2024 年 8 月 4 日
0.11.3 2024 年 7 月 22 日
0.10.13 2024 年 6 月 29 日
0.10.6 2024 年 3 月 17 日
0.4.2 2022 年 11 月 24 日

命令行实用程序 中排名 38

Download history 10/week @ 2024-04-29 9/week @ 2024-05-20 8/week @ 2024-05-27 2/week @ 2024-06-03 18/week @ 2024-06-10 189/week @ 2024-06-17 246/week @ 2024-06-24 168/week @ 2024-07-01 215/week @ 2024-07-08 13/week @ 2024-07-15 173/week @ 2024-07-22 97/week @ 2024-07-29 64/week @ 2024-08-05 10/week @ 2024-08-12

每月下载 344

Apache-2.0 OR MIT

63KB
1K SLoC

qrtool

CI Version MSRV License

qrtool 是一个用于编码或解码 QR 码的命令行实用程序。

Screenshot of qrtool

安装

从源代码安装

cargo install qrtool

通过软件包管理器

Packaging status

操作系统 软件包管理器 命令
任何 Homebrew brewinstall qrtool
任何 Nix nix-env-iA nixpkgs.qrtool
Arch Linux Pacman pacman -S qrtool
openSUSE Zypper zypper install qrtool

从二进制文件安装

发布页面 包含适用于 Linux、macOS 和 Windows 的预构建二进制文件。

如何构建

请参阅 BUILD.adoc

用法

基本用法

将字符串编码到 QR 码中

qrtool encode "QR code" > output.png

生成此图像

Output

从此图像解码 QR 码

$ qrtool decode output.png
QR code

输出格式

使用 -t 选项更改生成的图像格式。

格式为

  • png (默认)
  • svg
  • pic (PIC 标记语言)
  • ansi (使用 4 位 ANSI 转义序列到终端)
  • ansi256 (使用 8 位 ANSI 转义序列到终端)
  • ansi-true-color (使用 24 位 ANSI 转义序列到终端)
  • ascii (作为 ASCII 字符串到终端)
  • ascii-invert
  • unicode (作为 UTF-8 字符串到终端)
  • unicode-invert

将编码到 SVG 图像

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

生成此图像

Output

从 PIC 代码生成 PDF 文件

qrtool encode -t pic "QR code" \
    | awk 'BEGIN { print ".vs 0\n.po 0\n.PS" } END { print "scale = 25.4 * 3\n.PE" } { print }' \
    | groff -Tpdf -p -P-p3i,3i \
    > output.pdf

将 UTF-8 字符串输出到终端

qrtool encode -t unicode "QR code"

微型 QR 码生成

使用 --variant 选项更改生成的 QR 码的变体。变体是 normal (默认) 或 micro (微型 QR 码)。

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

生成此图像

Output

彩色输出

使用 --foreground--background 选项来更改生成的图像的前景色和背景色。这些选项接受一个 CSS 颜色字符串,例如 brown#a52a2argb(165 42 42)。默认前景色为黑色,背景色为 CSS 的命名颜色中的白色。

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

生成此图像

Output

当输出格式为任何 ANSI 转义序列时,也可以得到彩色输出。

qrtool encode -t ansi-true-color --foreground brown --background lightslategray "QR code"

注意,根据输出格式支持的颜色深度,可能会执行有损转换。

支持的输入图像格式

qrtool decode 支持从以下图像格式解码 QR 码:

为了支持从 SVG 图像解码,必须在编译时启用 decode-from-svg 功能。注意,在扫描之前,SVG 图像会被转换为栅格格式。

可以通过禁用 default 功能来禁用除 PNG 之外的图像格式,并且可以单独启用。

使用 -t 选项来指定图像格式。如果没有指定此选项,则根据扩展名或魔数确定图像格式。

输入此 WebP 图像

Input

从 WebP 图像解码 QR 码

$ qrtool decode input.webp
QR code
# or
$ qrtool decode -t webp input.webp
QR code

[^ico-note]: CUR 也受支持。

[^svg-note]: SVGZ 也受支持。

生成 shell 完成脚本

--generate-completion 选项将 shell 完成脚本生成到标准输出。

支持以下 shell:

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

示例

qrtool --generate-completion bash > qrtool.bash

与其他程序集成

qrtool encodeqrtool decode 都可以从标准输入读取并将输出写入标准输出。

优化输出图像

qrtool encode 输出的图像未经优化。例如,PNG 图像始终以 32 位 RGBA 格式输出。如果您想减小图像大小或优化图像,请使用例如 oxipngsvgcleaner 的优化器。

优化输出 PNG 图像

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

优化输出 SVG 图像

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

如果启用了 optimize-output-png 功能,您还可以使用此命令的 --optimize-png 选项和 --zopfli 选项来优化输出 PNG 图像。

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

如果您想将编码的图像保存为 PNG 或 SVG 之外的图像格式,或解码一个不受支持的图像格式,请使用例如 ImageMagick 的转换器进行转换。

光栅格式

从标准输入读取 Cargo.toml 并将编码结果保存为 XPM 图像

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

使用 bat 打印解码此图像的结果

magick output.xpm png:- | qrtool decode | bat -l toml
矢量格式

从标准输入读取一个字符串并将编码结果保存为 EPS 图像

echo "The quick brown fox jumps over the lazy dog." \
    | qrtool encode -t svg \
    | inkscape -p -o output.eps

将解码此图像的结果打印到标准输出

$ inkscape -o - --export-type svg output.eps | qrtool decode
The quick brown fox jumps over the lazy dog.

命令行选项

请参阅以下内容

变更日志

请参阅CHANGELOG.adoc

贡献

请参阅CONTRIBUTING.adoc

致谢

本程序灵感来源于qrencodezbarimg

许可证

版权所有 © 2022–2024 Shun Sakai和其他贡献者(见AUTHORS.adoc

  1. 本程序根据Apache License 2.0或MIT License的条款分发。
  2. 某些文件根据Creative Commons Attribution 4.0 International Public License的条款分发。

本项目符合REUSE规范的第3.2版。有关版权和许可的详细信息,请参阅各个文件的版权声明。

依赖关系

~11–25MB
~284K SLoC