Quantcast
Channel: Multimediaforum
Viewing all articles
Browse latest Browse all 4603

Text zu QR-Code Script

$
0
0
Hallo,

nachdem sich hier mideal mit seinem Script "geoutet" hat dachte ich mir das es an der Zeit ist das ich auch mal eines meiner Scripte hier den Kritikern vorstelle:

Angefangen hat es damit das ich kein Schreiber von SMS bin (Finger zu dick :D) dieses aber beruflich benötigt habe. So habe ich mich auf die Suche gemacht und fand im Internet eine Befehlszeile die über einen Zenity-Dialog die Texteingabe entgegennimmt, das war diese:
shell Konsole
qrtext=$(zenity --entry --text="Bitte gib den Text ein den Du als QR-Code möchtest:")
Nun lege ich auch einen gewissen Wert auf Textformatierung, so das mir das nicht mehr genügte, im weiteren Verlauf hatte ich auch den Bedarf den Text aus einer bestehenden Datei zu benutzen und erweitere das Script abermals. Oftmals kam es dann vor das ich den gleichen Code öfter benötigte und so baute ich eine Funktion ein die mir den erstellten QR-Code sichert.
Die aktuelle Fassung sieh jetzt so aus:

Code:

#!/bin/bash
# Name:                txt2qrcodeV4.sh
# Datum:                13.04.2013
# Autor:                herz_von_hessen@yahoo.de
# Abhängigkeiten:      bash, function, zenity, if, elif, $, cat, qrencode, kde-open
# Was es tut:          Dieses Script erzeugt aus Textdateien oder Texteingabe einen QR-Code
#################################################################################################################################################################
function menu {

AUSWAHL=$(zenity --list --radiolist --width=440 --height=200 --text "Möchten Sie eine Datei laden um einen QR-Code zu erzeugen?" --title "Auswahl" --column=""\
 --column Punkt --column Beschreibung \
\"\" Ja                "Eine Datei wählen" \
\"\" Nein              "Text eingeben" \
\"\" Abruch            "Das Script beenden" \
)

if [ -z "$AUSWAHL" ];then
        zenity --info --text "Danke für die Benutzung von $0"
elif [ "$AUSWAHL" = Ja ];then
        auswahl_Ja
elif [ "$AUSWAHL" = Nein ];then
        auswahl_Nein
elif [ "$AUSWAHL" = Abbruch ];then
        auswahl_Abbruch
fi
}

function auswahl_Ja {

FILEOPEN="$(zenity --file-selection --text "Bitte die Datei wählen die Du als QR-Code möchtest" --title=Datei-Auswahl)"
  cat $FILEOPEN | qrencode -l L -v 1 -o qrcode.png
        kde-open qrcode.png
zenity --question --text "Soll der QR-Code gesichert werden?"

if [[ $? == 0 ]] ; then
        mv qrcode.png qr_$(date +"%d_%m_%Y_%H:%M").png
                zenity --info --text="Der QR-Code wurde mit Datum und Zeit gesichert"
else
        rm -f qrcode.png && zenity --info --text="Der QR-Code wurde entfernt"
fi
menu
}

function auswahl_Nein {

touch qrtext.txt

OpenPath="$(zenity --file-selection --filename=qrtext.txt)"

if [ "$OpenPath" != "" ]
 then
  Data=$(cat "$OpenPath")
  NewData=$(echo -n "$Data" | zenity --text-info --filename=qrtext.txt --editable --width 650 --height 400)
  SavePath=$(echo -n "$(zenity --file-selection --filename="$OpenPath" --save --confirm-overwrite)")
  echo -n "$NewData" > "$SavePath"
fi

cat "$OpenPath" | qrencode -l L -v 1 -o qrcode.png
        gpicview qrcode.png

rm -f $(echo $qrtext)

zenity --question --text "Soll der QR-Code gesichert werden?"

if [[ $? == 0 ]] ; then
        mv qrcode.png qr_$(date +"%d_%m_%Y_%H:%M").png
                zenity --info --text="Der QR-Code wurde mit Datum und Zeit gesichert"
else
        rm -rf $(echo $OpenPath) && zenity --info --text="Der QR-Code wurde entfernt"
fi
menu
}

function auswahl_Abbruch {
zenity --info --text "Danke für die Benutzung"
menu
}

# Start
menu

Ich selbst komme damit ganz gut klar, würde aber gerne noch eine Prüfung einbauen die die Anzahl der benutzen Zeichen mit dem Standard verifiziert.
Hintergrund ist der, das ich bei langen Texten oder wenn ich Scripte in QR-Code wandle, das dann kein "richtig lesbarer" Text sondern ein "Produktcode" ausgegeben wird wenn ich das mit dem Smartphone fotografiere.
Es müsste also die maximale Anzahl an zulässigen Zeichen errechnen und mit den Zahlen des Wikipedia-Artikels vergleichen:
Zitat:

Der maximale Informationsgehalt eines QR-Codes (177×177 Elemente, Fehlerkorrektur-Level „L“) beträgt 23.648 Bit (2.953 Byte). Damit lassen sich laut Hersteller 7.089 Dezimalziffern, 4.296 alphanumerische Zeichen oder 1.817 Kanji-/Kana-Zeichen kodieren.[7]

Der Micro-QR-Code mit einer Größe zwischen 11×11 und 17×17 Elementen nimmt bis zu 35 Ziffern auf bei einer Randbreite von mindestens 2 Elementen.
Vielleicht kann es ja noch jemand anderes gebrauchen oder verbessern.

Lieben Gruß aus Hessen

Viewing all articles
Browse latest Browse all 4603