QR-Code Scanner für die Konsole

Für Mobiltelefone gibt es Barcode/QR-Code Scanner wie Sand am Meer. Für Linux auf dem Desktop jedoch nicht. Deshalb bastelte ich mir ein kleines Script, damit ich aus der Bash QR-Codes scannen kann. Das Script baut auf den Tools scrot und zbar auf.

QR-Code abfotografieren

Mit scrot kann man Screenshots machen. Entweder klickt man in ein Fenster oder man zieht (mit derm Schalter -s) ein Range auf, welcher man scannen will:

$ scrot -s qrcode.png

QR-Code scannen

Installiert man zbar, kann man mit dem Tool zbarimg Bilddateien nach QR-Codes scannen.

$ zbarimg qrcode.png

Sind auf dem Bild mehrere QR-Codes vorhanden, werden alle QR-Codes gescannt.

Praktisches Skript

Folgendes Skript qrscan prüft, ob die Tools scrot und zbar installiert sind, speichert die Auswahl von scrot in einer temporären Datei und verarbeitet diese mit zbarimg. Dabei wird die Ausgabe von zbarimg simpler ausgegeben und mögliche Fehlerfälle überprüft, damit das Tool ohne Fehler von Benutzern verwendet werden kann. Beim Beenden des Scripts wird die temporäre Datei mit einem Trap gelöscht. Somit wird die Datei auch gelöscht, falls mit Ctrl + C abgebrochen wird.

#!/bin/bash

PrintUsage(){
  cat << EOI
Usage: qrscan

Select range or click into a window to scan the qrcode(s).
Depends on scrot and zbar.
EOI

}

if (($# >= 1))
then
  PrintUsage
  exit
fi

if ! hash scrot 2>/dev/null && hash zbarimg 2>/dev/null
then
  echo "Could not find scrot and zbar."
  exit 1
fi

IMAGE="$(mktemp --tmpdir="/tmp" scanqr_XXXXX.png)"
trap 'rm "$IMAGE"' EXIT

if ! scrot -s "$IMAGE" 2>/dev/null
then
  echo "Could not take image."
  exit 1
fi

if ! zbarimg -q --raw "$IMAGE"
then
  echo "Could not read code."
  exit 1
fi

Der Code ist auch in meinem Scripts Repository auf GitHub zu finden: qrscan.

Links und weitere Informationen

Leave a Reply

Your email address will not be published. Required fields are marked *