Здрасти всем! Возможно вы уже видели эти черно-белые изображение раньше, которые можно читать через смартфон. Хочу представить простой GUI скрипт для того чтобы создавать этот самый QR code.
Ссылка на статью из wikipedia
QR code
Немного отойду от темы по поводу консоли. Многие говорят «За чем мне консоль?» и таму подобное, этот скрипт так же наглядно покажет эти ваши GUI и то же самое, но из консоли. Потом скажите что проще? Ок? Поехали…
QR code в LINUX (bash — консоль)
Для создания QR есть пакет под названием qrencode он нам и поможет. Сначала его нужно установить
$ sudo apt-get install qrencode
Потом выполнить команду для создания QR изображения
$ qrencode -s 5 -o ~/filename.png "bla-bla-bla"
Где:
-s 5 — «5» это размер пикселя, чем он больше, тем больше изображение
~/filename.png — путь куда сохранять
bla-bla-bla — контент, который мы хотим зашифровать в QR code
Получаем вот такую картинку
Не правда ли все просто?
QR code в LINUX (bash — скрипт)
1. создаем файл qr.sh
2. даем права на исполнение
$ chmod +x qr.sh
Или ставим галку: правой кнопкой мыши на qr.sh ->> свойства ->> вкладка права ->> позволять выполнять файл как программу
3. Открываем файл блокнотом (текстовым редактором)
4. Вставляем код и сохраняем
Показать код
#!/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
5. запускаем скрипт: два щелчка на файле qr.sh ->> запустить, далее следуем инструкции. При первом запуске будет установлен пакет qrencode для преобразования текста в QR code.
На этом все!
Каждое действие в скрипте прокомментировано, ну что проще и быстрей?
P.S. Как всегда экспериментирую, пинки и критика приветствуется! Чуть не забыл, вот сервис для считывания QR
из изображени, а это считывает QR
при помощи веб-камеры.
Комментариум (29)
RSS свернуть / развернутьterra
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Однако почему не применил zenity --file-selection? Так-же проще выбирать папку да и диалог один вместо двух.
itshnic
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
makenskiy
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
terra
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
makenskiy
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
terra
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
makenskiy
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
pashtuun
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
terra
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Anonymous
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
[ -f /usr/bin/qrencode ] || gksu 'apt-get install qrencode -y'
Дайте ссылку где написано про "!". Почему он так меняет скрипт?
Anonymous
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
terra
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Слеши \"$path\" нужны, чтобы экранировать символы кавычек (") от парсинга, т.е. чтобы они присутствовали в выводимом тексте! Т.е. надпись в окне будет такой:
Файл "/tmp/tmp.png" сохранен.
а если слеши не ставить будет так:
Файл /tmp/tmp.png сохранен.
Anonymous
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Почему вы пишите
переменная=$(zenity.............)
а ТС пишет
переменная=`zenity..............`
В чем различие?
dnsi
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
terra
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
sudo apt-get install linux-headers-`uname -r`
здесь команда uname -r возвращает версию ядра, которая образует полное имя пакета для установки!!!
$() — скорее приведение типов, хотя типизация переменных в баше крайне путана и туманна;))
pashtuun
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
terra
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Скрипт читает текст из первичного буфера обмена(того, что принимает непосредственно выделяемый текст и вставляет его кликом по средней кл.мыши) преобразует его в QR и выводит на экран без лишних вопросов.
Подвесив его на хоткей(я выбрал F12), получение QR-кода на экране сводится к выделению нужного текста и нажатию на хоткей;)
Ввел ограничение на 1023 символа, большее количество мой смарт выводит в виде крякозабров:((
makenskiy
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
pashtuun
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
dnsi
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
dnsi
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
terra
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
bill_god
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
raxp
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
«Мы создадим новый браузер, и назовем его Internet Explorer.»
«Мы сделаем Windows операционной системой.»
«Мы создадим новый медиаплеер и назовем его Windows Media.»
«Мы признаем свою ошибку при создании Windows 95/98/ME. Поэтому мы создаем новую ОС Windows 2000, она будет совмещать безопасность NT и дружелюбность 9x»
«Стандартные средства программирования не удовлетворяют нашим требованиям. Мы создадим .NET»
«Мы внедряем в XP систему активации, надо бороться с пиратством.»
«Мы создадим новый сервис Live.»
«Мы решили, что Longhorn не удовлетворяет нашим требованиям. Поэтому мы переделываем его в висту.»
«Надо бороться с пиратством среди компьютерных игр. Мы создадим Games For Windows Live»
«Vista не оправдала наших ожиданий. Мы выпускаем Windows 7, только она будет оптимизированной вистой.»
«Аудитория Live Search слишком низкая. Мы создадим Bing.»
«Windows Mobile отжила свое. Мы создадим Windows Phone.»
«Flash отжил свое. Мы создадим Silverlight.»
Так кто у нас главный по велосипедам? :)
bill_god
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
pashtuun
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
raxp
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Другое дело — один (Балмер не в счет).
itshnic
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Anonymous
Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.