Каталог решений - Создание QR кода с логотипом компании

Создание QR кода с логотипом компании

Создание QR кода с логотипом компании

В наличии

Генерация QR кода с помощью api google с последующим нанесением логотипа компании

Категория:

Описание

QR код может иметь около 30% зон заполненной случайной информацией — эти 30% нам и нужны. Согласно википедии: «Исправляется до 30% повреждений (фиксированные уровни в 7, 15, 25 и 30 процентов)» и телефон всё равно сможет раскодировать информацию. Таким образом QR коду возможно придавать любую форму и цвет. 

Стартовой точкой послужил этот ресурс http://bit.ly/pwcDQL.

Для формирования текста использовалась код из публикации: //sale.itcity.ru/public/80106/, с исправлением некоторых недочетов.


Порядок действий:

  1. Генерируем текст, который надо прописать в QR-коде;
  2. Используем ссылку «http://chart.apis.google.com/chart?cht=qr&chs=308×308&chl=» +»Наш текст»;
  3. Скачиваем картинку (стандартным 1С способом без использования внешней компоненты);
  4. С помощью программы IrfanView редактируем картинку и наносим watermark (в автоматическом режиме);
  5. Размещаем картинку (в данной статье РисунокТабличногоДокумента).


Код реализации:

filename = СоздатьQR_Code_Чек("тут данные");
Если НЕ filename = Неопределено Тогда
      ОбластьQR_Code.Рисунки.D1.Картинка =Новый Картинка(filename);
      ТабличныйДокумент.Вывести(ОбластьQR_Code);
      УдалитьФайлы(filename);
КонецЕсли;

 
Функция СоздатьQR_Code_Чек(Соответствие) Export
        Строка = "QR код с логотипом" + Символы.ПС;
        Data = EncodeURL(Строка);
        filename = СоздатьQR_Code(Data);

        Если НЕ filename = Неопределено Тогда
                Ком = Новый COMObject("wScript.Shell");
                Ком.Run("cmd /c start /wait c:\IrfanView\i_view32.exe " + filename + " /crop=(17,17,270,270) /advancedbatch /aspectratio /resample /silent /convert=" + filename, , Истина);
        КонецЕсли;

        Возврат filename;

КонецФункции



Функция СоздатьQR_Code(Data) Export
         Возврат ПолучитьКартинкуПоHTTPСсылке("chart.apis.google.com", "chart?cht=qr&chs=308x308&chl=" + Data);
КонецФункции



Функция ПолучитьКартинкуПоHTTPСсылке(Server, Ref) Export

        ИмяВременногоФайла = ПолучитьИмяВременногоФайла("png");

        Попытка
               Соединение = Новый HTTPСоединение(Server);
               Соединение.Получить(Ref, ИмяВременногоФайла);
               Возврат ИмяВременногоФайла;
        Исключение
               Возврат Неопределено;
        КонецПопытки;

КонецФункции
 
 

Функция КонвертироватьСтрокуHEX(Значение) Export

        Значение = Число(Значение);
        Если Значение <= 0 Тогда
               Результат = "0";
        Иначе
               Значение = Цел(Значение);
               Результат = "";
               Пока Значение > 0 Цикл
                       Результат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", Значение%16 + 1,1) + Результат;
                       Значение = Цел(Значение / 16) ;
                КонецЦикла;
        КонецЕсли;

        Если СтрДлина(Результат) < 2 Тогда
                Результат = "0" + Результат;
        КонецЕсли;
        Возврат "%" + Результат;
КонецФункции



Функция EncodeURL(URL) Export
        Рез = "";
        Для Сч = 1 По СтрДлина(URL) Цикл
               ch = Сред(URL,Сч,1);
               vch = КодСимвола(ch);
              Если ("A" <= ch ) И ( ch <= "Z") Тогда // "A".."Z"
                        Рез = Рез + ch;
             ИначеЕсли ("a" <= ch ) И ( ch <= "z") Тогда // "a".."z"
                        Рез = Рез + ch;
             ИначеЕсли ("0" <= ch ) И ( ch <= "9") Тогда // "0".."9"
                        Рез = Рез + ch;
             ИначеЕсли (ch = " ") ИЛИ ( ch = "+") Тогда // space
                        Рез = Рез + "+";
             ИначеЕсли (ch = "-" ) ИЛИ ( ch = "_") // unreserved
                ИЛИ (ch = ".") ИЛИ (ch = "!")
                ИЛИ (ch = "~") ИЛИ (ch = "*")
                ИЛИ (ch = "") ИЛИ (ch = "(")
                ИЛИ (ch = ")") Тогда
                        Рез = Рез + ch;
             ИначеЕсли (vch <= 127) Тогда // other ASCII
                        Рез = Рез + КонвертироватьСтрокуHEX(vch);
             ИначеЕсли (vch <= 2047) Тогда // non-ASCII
                        Рез = Рез + КонвертироватьСтрокуHEX(192 + Цел(vch / 64));
                        Рез = Рез + КонвертироватьСтрокуHEX(128 + (vch % 64));
             Иначе // 0x7FF < ch
                        Рез = Рез + КонвертироватьСтрокуHEX(224 + Цел(vch / 4096));
                        Рез = Рез + КонвертироватьСтрокуHEX(128 + (Цел(vch / 64) % 64));
                        Рез = Рез + КонвертироватьСтрокуHEX(128 + (vch % 64));
             КонецЕсли;
      КонецЦикла;
       Возврат Рез;
КонецФункции
 

 

Разберем строчку кода:

 Ком.Run(«cmd /c start /wait c:\IrfanView\i_view32.exe » + filename + » /crop=(17,17,270,270) /advancedbatch /aspectratio /resample /silent /convert=» + filename, , Истина);

«cmd» — запуск команднои строки.

«/c» — дождаться завершения работы команд и завершить сеанс cmd

«start /wait» — дает нам возможность запустить приложение и ждать его завершения

«/crop=(17,17,270,270)» — обрезать часть изображение по заданым параметрам (x, y, widht, height) 

«/advancedbatch» — использовать продвинутые опции

«/aspectratio» — сохранять пропорции изображения

«/resample» — минимизировать потери качества

«/silent» — не выводить сообщения про ошибки и предупреждения

«/convert=» — конвентировать и записать в файл с именем


И сам watermark, нужно запустить IrfanView и произвести настройки:

После настройки сохраните: «Save settings»


Для работы выбирайте логотип который будет занимать не более 30% QR-кода, так же для повышения читаемости исспользуйте прозрачность, в этом примере логотип занимает не более 15%. Удачных Вам свершений.


UPD: Irfanview сохраняет настройки для каждого пользователя отдельно. (вот здесь: C:\Users\ИмяПользователя\AppData\Roaming\IrfanView). Если вы используете файловый вариант базы, для каждого пользователя нужно скопировать настройки IrfanView в эту папку. Если же это серверный вариант — достаточно скопировать настройку пользователю от которого запущена служба 1С.

has been added to your cart:
Оформление заказа