вторник, 5 марта 2013 г.

Создание QR кода в Ubuntu / Linux Mint

 Захотелось мне уходя утром на работу оставлять дочке креативные записочки типа " Помоешь посуду, шоколадка в верхнем шкафчике на кухне, покорми кота и т.д"
И решил я это делать довольно лёгким и интересным способом как шифровать текст в виде QR кода. 
         При помощи QR-кода можно закодировать любую информацию, например: текст, номер телефона, ссылку на сайт или визитную карточку.
Все мы знаем что любой телефон на базе Symbian или Android обладают камерами и возможностью сканировать QR-коды и извлекать из них информацию.
И даже если такое приложение не установлено, то его легко найти в сети, что собственно я и сделал для телефона на базе Android, например
Вот небольшой список программ для смартфонов, которые помогут распознать QR-код :
- для Symbian - Kaywa reader, Nokia barcode reader, I-Nigma, QuickMark, UpCode;
- для Android - Barcode Scanner, Barcode2file, QR Droid, NeoReader, ixMAT Scanner, 2D-код;
- для Maemo - mbarcode;
- для Windows Mobile - QuickMark, I-Nigma.
         Итак начнем:
Для начала нам необходимо установить небольшую утилиту qrencode
наберем в терминале:
#sudo apt-get install qrencode
теперь для удобства использования создадим скрипт  qr.sh и разрешим выполнение файла как программы.
----------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash

# проверяем есть ли пакет qrencode, если есть, продолжаем...

if [ -f /usr/bin/qrencode ] ; then

        # берем переменную path (путь).

        path=`zenity --entry --title="Куда сохранять?" --text="Куда сохранять QR CODE?  По умолчанию "$HOME", или напишите свой путь."`
                # проверяем, если ответ = 0 (ок) выполняем...
                if [ $? = 0 ];then
                        # проверяем, если не заполненно поле, то вписываем переменную $HOME - /home/ваш_пользователь.
                        if [ -z $path ];then
                        path="$HOME"
                        fi
                # иначе вырубаем скрипт, и информируем в консоль об отмене.
                else
                        echo "Отмена"
                        exit 1
                fi

        # берем переменную name (имя).

        name=`zenity --entry --title="Имя файла?" --text="Введите имя нового QR, по умолчанию: filename"`
                # проверяем, если ответ = 0 (ок) выполняем...
                if [ $? = 0 ];then
                        # проверяем, если имя не заполненно, передаем переменной "name" дефолтное имя "filename".
                        if [ -z $name ];then
                        name="filename"
                        fi
                # иначе вырубаем скрипт, и информируем в консоль об отмене.
                else
                        echo "Отмена"
                        exit 1
                fi

        # берем переменную width (длинна, размер).

        width=`zenity --entry --title="Какой размер?" --text="Введите размер пикселя для нового QR, по умолчанию = 3."`
                # проверяем, если ответ = 0 (ок) выполняем...
                if [ $? = 0 ];then
                        # проверяем, если размер не заполнен, передаем переменной "width" дефолтный размер = 3.
                        if [ -z $width ];then
                        width=3
                        fi
                # иначе вырубаем скрипт, и информируем в консоль об отмене.
                else
                        echo "Отмена"
                        exit 1
                fi

        # берем переменную content (текст который преобразовываем в QR).

        content=`zenity --entry --title="Контент" --text="Введите текст, который хотите преобразовать в QR"`
                # проверяем, если ответ = 0 (ок) выполняем преобразование...
                if [ $? = 0 ];then
                                # проверяем, если не заполненно вырубаем скрипт.
                                if [ -z $content ];then
                                        echo "Отмена"
                                        exit 1
                                fi

                        # выполняем преобразования в QR командой: qrencode -s "$размер" -o "$путь"/"$имя".png "$текст".

                        qrencode -s "$width" -o "$path"/"$name".png "$content"

                        # информируем в консоль и через GUI окно о завершении преобразования.

                        echo "Сохроненно в $path, имя нового QR: $name.png"
                        zenity --info --window-icon='info' --title="Завершено!" --text="Сохроненно в $path, имя нового QR: $name.png"
                # иначе вырубаем скрипт, и информируем в консоль об отмене.
                else
                        echo "Отмена"
                        exit 1
                fi

# если файла /usr/bin/qrencode нет (пакет qrencode не установлен), устанавливаем.

else
        # включаем прогресс бар
        (
        echo "10" ; sleep 1
        echo "50" ; sleep 1
        # устанавливаем пакет qrencode, если установка с su не будет работать (*ubuntu) меняем gksu на gksudo.
        gksu 'apt-get install qrencode -y' ; sleep 1
        echo "100" ;
        ) |
        zenity --progress \
          --title="Установка" \
          --text="Установка пакета qrencode..." \
          --percentage=0

        # информируем в консоль и через GUI окно о завершении установки.

        echo "Установка завершена, перезапустите скрипт."
        zenity --info --window-icon='info' --title="Установка завершена!" --text="Установка завершена, перезапустите скрипт."
fi
----------------------------------------------------------------------------------------------------------------------------------


Данный скрипт я расположил в домашней директории.
/home/fin/qr.sh

Ну вот собственно и всё. Мы можем приступить к созданию QR кодов
На данном примере я буду демонстрировать как сгенерировать QR код с гиперссылкой на сайт http://jabga.ru/
Запускаем скрипт

Куда сохранять

Имя файла

Укажите размер QR кода

Текст или ссылка для шифрования

Готово

Ну вот что у нас получилось. Можете проверить результат сканером с монитора Вашего компьютера.

Enjoy ;)

1 комментарий:

  1. Мне больше нравится так. И повесить на глобальную горячую клавишу.

    #!/bin/sh
    FILE=`mktemp /tmp/qrcXXXX`
    xclip -o >$FILE
    if [ ! -s $FILE ] ; then
    xclip -selection c -o >$FILE
    fi
    qrencode -s 10 -lL -o /tmp/qrcode.png < $FILE
    rm $FILE
    eom /tmp/qrcode.png
    #xdg-open /tmp/qrcode.png
    rm /tmp/qrcode.png

    ОтветитьУдалить