當前位置: 妍妍網 > 碼農

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」 獲取源碼地址