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
每月下载 344 次
63KB
1K SLoC
qrtool
qrtool 是一个用于编码或解码 QR 码的命令行实用程序。
安装
从源代码安装
cargo install qrtool
通过软件包管理器
操作系统 | 软件包管理器 | 命令 |
---|---|---|
任何 | 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
生成此图像
从此图像解码 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"
生成此图像
从 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
生成此图像
彩色输出
使用 --foreground
和 --background
选项来更改生成的图像的前景色和背景色。这些选项接受一个 CSS 颜色字符串,例如 brown
、#a52a2a
或 rgb(165 42 42)
。默认前景色为黑色,背景色为 CSS 的命名颜色中的白色。
qrtool encode --foreground brown --background lightslategray "QR code" > output.png
生成此图像
当输出格式为任何 ANSI 转义序列时,也可以得到彩色输出。
qrtool encode -t ansi-true-color --foreground brown --background lightslategray "QR code"
注意,根据输出格式支持的颜色深度,可能会执行有损转换。
支持的输入图像格式
qrtool decode
支持从以下图像格式解码 QR 码:
- BMP
- DDS
- Farbfeld
- GIF
- Radiance RGBE
- ICO[^ico-note]
- JPEG
- OpenEXR
- PNG
- PNM
- QOI
- SVG[^svg-note]
- TGA
- TIFF
- WebP
为了支持从 SVG 图像解码,必须在编译时启用 decode-from-svg
功能。注意,在扫描之前,SVG 图像会被转换为栅格格式。
可以通过禁用 default
功能来禁用除 PNG 之外的图像格式,并且可以单独启用。
使用 -t
选项来指定图像格式。如果没有指定此选项,则根据扩展名或魔数确定图像格式。
输入此 WebP 图像
从 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 encode
和 qrtool decode
都可以从标准输入读取并将输出写入标准输出。
优化输出图像
qrtool encode
输出的图像未经优化。例如,PNG 图像始终以 32 位 RGBA 格式输出。如果您想减小图像大小或优化图像,请使用例如 oxipng
或 svgcleaner
的优化器。
优化输出 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。
贡献
致谢
许可证
版权所有 © 2022–2024 Shun Sakai和其他贡献者(见AUTHORS.adoc)
- 本程序根据Apache License 2.0或MIT License的条款分发。
- 某些文件根据Creative Commons Attribution 4.0 International Public License的条款分发。
本项目符合REUSE规范的第3.2版。有关版权和许可的详细信息,请参阅各个文件的版权声明。
依赖关系
~11–25MB
~284K SLoC