28 个版本
0.12.5 | 2024年5月15日 |
---|---|
0.12.3 | 2024年4月28日 |
0.12.1 | 2024年3月12日 |
0.11.0 | 2023年12月30日 |
0.3.1 | 2022年4月12日 |
#33 in 图像
2,495 每月下载量
用于 10 个crate (8 直接)
470KB
9K SLoC
fast_qr
的速度大约是 qrcode
的 6-7 倍,见 基准测试
您可以将二维码创建为
- 原始矩阵,适用于自定义使用
- 矢量化图像,适用于网络使用
- 图像,适用于移动/打印使用
用法
Rust
示例
您可以使用以下命令运行示例
cargo run --example simple
cargo run --example svg -F svg
cargo run --example image -F image
它们都在下面详细解释。
将 QRCode
转换为 Unicode
use fast_qr::convert::ConvertError;
use fast_qr::qr::QRBuilder;
fn main() -> Result<(), ConvertError> {
// QRBuilder::new can fail if content is too big for version,
// please check before unwrapping.
let qrcode = QRBuilder::new("https://example.com/")
.build()
.unwrap();
let str = qrcode.to_str(); // .print() exists
println!("{}", str);
Ok(())
}
将 QRCode
转换为 SVG docs.rs
注意:它需要 svg
功能
use fast_qr::convert::ConvertError;
use fast_qr::convert::{svg::SvgBuilder, Builder, Shape};
use fast_qr::qr::QRBuilder;
fn main() -> Result<(), ConvertError> {
// QRBuilder::new can fail if content is too big for version,
// please check before unwrapping.
let qrcode = QRBuilder::new("https://example.com/")
.build()
.unwrap();
let _svg = SvgBuilder::default()
.shape(Shape::RoundedSquare)
.to_file(&qrcode, "out.svg");
Ok(())
}
将 QRCode
转换为图像 docs.rs
注意:它需要 image
功能
use fast_qr::convert::ConvertError;
use fast_qr::convert::{image::ImageBuilder, Builder, Shape};
use fast_qr::qr::QRBuilder;
fn main() -> Result<(), ConvertError> {
// QRBuilder::new can fail if content is too big for version,
// please check before unwrapping.
let qrcode = QRBuilder::new("https://example.com/")
.build()
.unwrap();
let _img = ImageBuilder::default()
.shape(Shape::RoundedSquare)
.background_color([255, 255, 255, 0]) // Handles transparency
.fit_width(600)
.to_file(&qrcode, "out.png");
Ok(())
}
JavaScript / TypeScript
安装
npm install --save fast_qr
# Or
yarn add fast_qr
创建一个 svg
/// Once `init` is called, `qr_svg` can be called any number of times
import init, { qr_svg, SvgOptions, Shape } from '/pkg/fast_qr.js'
const options = new SvgOptions()
.margin(4)
.shape(Shape.Square)
.image("") // Can be a URL or a base64 encoded image
.background_color("#b8a4e5")
.module_color("#ffffff");
// Using then / catch:
init()
.then(() => {
for (let i = 0; i < 10; i++) {
const svg = qr_svg("https://fast-qr.com", options);
console.log(svg);
}
})
.catch(console.error);
// Or using modern async await:
await init();
for (let i = 0; i < 10; i++) {
const svg = qr_svg("https://fast-qr.com", options);
console.log(svg);
}
构建 WASM
WASM 模块也存在于 NPM 注册表中
包名为 fast_qr
,可以按如下方式安装
npm install --save fast_qr
WASM 模块可能已捆绑
在最新的 发布版 中找到捆绑版本。
可以从源代码构建 WASM 模块
./wasm-pack.sh # Runs build in release mode and wasm-opt twice again
wasm-pack pack pkg # Creates an archive of said package
# wasm-pack publish pkg # Creates an archive & publish it to npm
基准测试
根据以下基准测试,fast_qr
的速度大约是 qrcode
的 6-7 倍。
基准测试 | 较低 | 估计 | 较高 | |
---|---|---|---|---|
V03H/qrcode | 524.30 us | 535.02 us | 547.13 us | |
V03H/fast_qr | 82.079 us | 82.189 us | 82.318 us | fast_qr 快 6.51 倍 |
V10H/qrcode | 2.1105 ms | 2.1145 ms | 2.1186 ms | |
V10H/fast_qr | 268.70 us | 269.28 us | 269.85 us | fast_qr 快 7.85 倍 |
V40H/qrcode | 18.000 ms | 18.037 ms | 18.074 ms | |
V40H/fast_qr | 2.4313 ms | 2.4362 毫秒 | 2.4411 毫秒 | fast_qr 的速度是 7.40 倍 |
更多基准测试可以在 /benches 文件夹 中找到。
依赖关系
~0–0.8MB
~17K SLoC