Как сделать художественный qr code. Как сделать красивый QR-код. Создать QR-код с изменённой формой точек

Автор блога Hack A Day Брайан Бенчофф (Brian Benchoff) разобрался в алгоритме генерации QR-кодов (стандарт ISO 18004) и составил инструкцию , как можно внедрить в QR-код произвольное изображение. Например, логотип фирмы.

Для работы использовались генератор QR-кодов и Microsoft Paint для попиксельного редактирования.

Шестая версия QR-кодов представляет собой квадрат со стороной 41 пиксел.

На картинке показан шаблон QR. На нём чёрные пикселы всегда обязаны быть чёрными, а белые обязаны быть белыми. Серая зона свободна для творчества.

Серое пространство разделяется на 172 восьмипиксельных участка, как показано ниже.

Некоторые зоны разбиты на две части и разнесены в пространстве, они соединяются чёрными линиями. Как показывает опыт, около 30% зон могут быть заполнены случайной информацией , и телефон всё равно сможет раскодировать информацию. Таким образом, из наших 172 зон можно использовать примерно 51 штуку, придавая любую форму и цвет.

То есть можно нарисовать рисунок размером 51 пиксел. Например, вот логотип Hack A Day.

Важно сделать контрастный контур, чтобы логотип отделялся от разнородного фона. Если поместить этот логотип на шаблок QR-кода, получится примерно такая картина.

Теперь нужно подсчитать, какое количество восьмипиксельных зон затронуто логотипом. Похоже, что не больше 51 штуки, так что всё нормально, поэтому можно переходить к следующему этапу: генерации настоящего QR-кода поверх этой картинки. Открываем вышеупомянутый генератор QR-кодов , выбираем шестую версию, уровень коррекции ошибок и указываем информацию для закодирования (http://www.hackaday.com). Поверх полученного кода вставляем логотип.

Вот такую штуку уже можно печатать на визитках.

Чтобы делать по-настоящему красивые логотипы, можно взять QR-код большего размера. Например, 14-й версии со стороной квадрата 73 пиксела. При определённых условиях можно даже залезать в служебную зону на границе.

IBM выглядит реально красиво в этом размере. Для сравнения, IBM в QR v6 не столь впечатляет.

Заметьте, что пикселы можно делать любого цвета: белого, чёрного, красного или лилового, важен только контраст между ними. Поскольку в данном логотипе буквы IBM относительно тёмные, то алгоритм воспримет их как чёрные. Использование цвета - удобный приём, который позволяет избавиться от контрастной границы и, таким образом, экономит пространство для логотипа.

Если бы у логотипа Firefox была белая граница, то он бы покрыл больше 30% площади изображения. А с использованием цвета он покрывает меньше 30% и этот QR-код прекрасно считывается.

Кстати, вам совсем не обязательно ограничивать себя попиксельным разрешением QR-кода, вы можете вставить изображение и с более высоким разрешением. Правда, оно уже не будет смотреться столь органично.

UPD. В Android Market появилось приложение MeCode Beta , которое позволяет генерировать произвольные штрих-коды на телефоне, в том числе и с логотипами. Очень удобная вещь - можно вывести картинку на экран и обмениваться информацией с другими телефонами.

Некоторое время назад мне потребовалось генерировать несколько QR-кодов для каждого пользователя системы. А чтобы было интересно сканировать этот код, было решено добавить в него логотип.

Предисловие
QR-коды можно встретить везде, но как их отличить друг от друга? QR-коды всё время завоёвывают популярность, и нет-нет, да и встретятся несколько штук рядом. Зрелище это не из приятных - какой сканировать первым? И вообще, зачем сканировать то, от чего начинает рябить в глазах?
Решением такой задачи может служить персонализирование QR-кода: нестандартные цвета, логотип, или пояснительная надпись немного ниже самого кода, по которой можно понять - интересно ли зрителю это или нет.
Навеняка многие видели красивые QR-коды (а кто не видел, может посмотреть на хабре или на стороннем ресурсе), но мне стоит оговориться - чтобы создать такой, нужно вложить либо большие ресурсы в алгоритм генерации картинки, либо нарисовать такой код в фотошопе, но это будет единичный экземпляр, и для большинства из нас он не годится (если, конечно, есть вообще необходимость генерировать их самому).
Как это реализовано?
Создатели QR-кодов не расчитывали, что мы будем вставлять свои картинки в закодированные сообщения, коими являются сами коды, но они предусмотрели возможность высокого объёма восстановительной информации - код может содержать до 30% последней. Чем её больше - тем гуще картинка, но больше шансов, что пользователь раскодирует испорченный код. А портить мы его будем логотипом.
Для генерации кода использовалась библиотека ZXing - это open source библиотека для обработки различных 1D/2D штрихкодов, которая, кроме Java, имеет порты на другие языки.
Особенностью этой библиотеки является то, что она разбита на модули и распространяется в исходных кодах, которые необходимо компилировать. Но, к счастью, она есть в мавен репозитории - модуль core использовался для генерации, и модуль java se использовался для валидации кодов.
Для работы с графикой были использованы стандартные классы из пакета java.awt (JavaSE).
За дело!
Для экспериментов была сделана небольшаю консольная программа, которую можно найти на гитхабе - репозиторий опытного образца , которую я и разберу в этом разделе.

Тот, кому просто нужен QR-код, может написать следующее:
BitMatrix matrix = new MultiFormatWriter().encode("text to encode", BarcodeFormat.QR_CODE, width, height); MatrixToImageWriter.writeToFile(matrix, filename.substring(filename.lastIndexOf(".")+1), new File(filename));
В противном случае так делать не стоит - по умолчанию библиотека добавит мало восстановительной информации, и даже если после вставки логотипа картинка расшифруется у нас на компьютере, то с фотокамеры она уже может считаться неправильно. По-этому будет хорошим тоном добавить максимум восстановительной информации, а раз мы будем изменять цвета и картинку, то не нужно спешить сохранять результат:
Hashtable hintMap = new Hashtable(); hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix bitMatrix = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, qrCodeSize, qrCodeSize, hintMap);
Создание картинки из матрицы кода делается в цикле - создаём картинку соответствующего размера и, проходя матрицу кода, отображаем наличие бита в матрице на картинку как информативный пиксель. Во время этого действа можно задать цвет фона и цвет кода:
int matrixWidth = bitMatrix.getWidth(); BufferedImage image = new BufferedImage(matrixWidth, matrixWidth, BufferedImage.TYPE_INT_RGB); image.createGraphics(); Graphics2D graphics = (Graphics2D) image.getGraphics(); graphics.setColor(Color.white); graphics.fillRect(0, 0, matrixWidth, matrixWidth); Color mainColor = new Color(51, 102, 153); graphics.setColor(mainColor); //Write Bit Matrix as image for (int i = 0; i < matrixWidth; i++) { for (int j = 0; j < matrixWidth; j++) { if (bitMatrix.get(i, j)) { graphics.fillRect(i, j, 1, 1); } } }
Ну вот, теперь, когда мы оперируем картинкой, а не матрицей единиц и нулей, нам очень даже удобно и логотип в центр поместить, предварительно поправив его разрешение, чтобы не перекрывать весь код в случае слишком большого размера:
BufferedImage logo = ImageIO.read(this.getLogoFile()); double scale = calcScaleRate(image, logo); logo = getScaledImage(logo, (int)(logo.getWidth() * scale), (int)(logo.getHeight() * scale)); graphics.drawImage(logo, image.getWidth()/2 - logo.getWidth()/2, image.getHeight()/2 - logo.getHeight()/2, image.getWidth()/2 + logo.getWidth()/2, image.getHeight()/2 + logo.getHeight()/2, 0, 0, logo.getWidth(), logo.getHeight(), null); private BufferedImage getScaledImage(BufferedImage image, int width, int height) throws IOException { int imageWidth = image.getWidth(); int imageHeight = image.getHeight(); double scaleX = (double)width/imageWidth; double scaleY = (double)height/imageHeight; AffineTransform scaleTransform = AffineTransform.getScaleInstance(scaleX, scaleY); AffineTransformOp bilinearScaleOp = new AffineTransformOp(scaleTransform, AffineTransformOp.TYPE_BILINEAR); return bilinearScaleOp.filter(image, new BufferedImage(width, height, image.getType())); }
После нашего надругательства над кодом, обязательно стоит его проверить на правильность - хватит ли восстановительной информации для идеальной фотокамеры? И если хватит, то пора сохранить катинку и отдать её пользователю:
if (isQRCodeCorrect(content, image)) { ImageIO.write(image, imageFormat, this.getGeneratedFileStream()); } private boolean isQRCodeCorrect(String content, BufferedImage image){ boolean result = false; Result qrResult = decode(image); if (qrResult != null && content != null && content.equals(qrResult.getText())){ result = true; } return result; } private Result decode(BufferedImage image){ if (image == null) { return null; } try { LuminanceSource source = new BufferedImageLuminanceSource(image); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Result result = new MultiFormatReader().decode(bitmap, Collections.EMPTY_MAP); return result; } catch (NotFoundException nfe) { return null; } }

Поставленная цель достигнута - QR код сгенерирован. Спасибо за внимание!

В 1994 году инженерами компании «Denso-Wave », которая в Японии выступает лидером инновационных разработок для автомобилей, был представлен миру двумерный штрих код, основным названием которого сейчас является сокращение от словосочетания quick response – QR-код , что означает «быстрый отклик «:

Создать QR-код – это решение, которое стало результатом потребности рынка в кодах, которые бы могли обеспечить хранение большего объема информации и, одновременно с этим, использовать меньше места при печати. Именно эти требования не мог обеспечить ранее широко используемый штрих код. Ниже приведены основные преимущества QR-кода :

  • Количество информации. QR-код хранит информацию, записанную в двух направлениях: в горизонтальном и вертикальном. Такое расположение дает возможность сохранить данных в сотни раз больше (4269 символов ), чем в обычном штрих коде:
  • «Реставрация » QR-кода – возможность восстановления информации, если поврежденный участок составляет не более 30% от общей площади кода;
  • Легкость в распознавании. Двумерный штрих код можно сканировать с помощью смартфона, а его предшественник требовал использования специального сканирующего устройства.

Что закодировано в QR-коде?

QR-код может хранить в себе что угодно: это любая текстовая информация, закодированная с помощью букв, цифр или специальных символов, то есть, в двумерном штрих коде может быть записана ссылка на веб-страницу, телефонный номер, описание товара, характеристики автомобиля и т.д.

Именно из-за такого разнообразия QR-код используется в различных сферах:

  • Производство и продажа товаров (кодировка различной информации о товарах );
  • Развлечения. В кино, музеях и театрах QR-код заменяет всем привычные бумажные билеты;
  • Туризм. В двумерных штрих кодах записана информация о достопримечательностях;
  • Уход за пожилыми. Для оказания помощи старику, в его бейдже присутствует вся информация о владельце в закодированном виде, которую легко считать при помощи смартфона.

Как считать информацию QR-кода?

Для сканирования двумерного штрих кода нужен гаджет с камерой. Это может быть смартфон, ноутбук или планшет. На любое из данных устройств необходимо установить сканирующую программу, которая находится в свободном доступе в интернете. После установки, нужно активировать приложение, затем направить камеру на QR-код .

Программа отсканирует изображение кода, и результатом ее работы будет отчет с расшифрованной информацией об объекте, на котором находится данный штрих код.

Как создать QR-код?

Проще всего создать QR-код онлайн. Это ни для кого не составит труда, нужно лишь корректно сформулировать текст для кодирования, длина которого не должна превышать 150 знаков.

Технически возможно поместить в штрих код больший объем информации, но это будет затруднять сканирование кода с помощью мобильных телефонов. Однако штрих код может хранить не только текст, но и изображения, ссылки, звуковые записи, и другие виды информации.

На данный момент в сети действует большое количество бесплатных ресурсов, которые предоставляют возможность сгенерировать QR-код . Далее приведена пошаговая инструкция по созданию штрих кода с различной информацией при помощи популярного онлайн генератора Creambee.ru .

Создание QR-кода из текста

  • Чтобы создать QR-код , нужно перейти на сайт-генератор и выбирать тип кода. В данном случае, это «текст »:
  • Далее в специально предназначенное для этого поле вводится текст, после чего можно сгенерировать код, кликнув мышкой на соответствующую кнопку:
  • После описанных манипуляций код будет сгенерирован. В появившемся справа окошке можно настроить формат и размер изображения, а также скачать двумерный штрих код:

Создание QR-кода для визитки

Процесс создания QR-кода для визитки также прост. Необходимо выполнить следующие действия:

  • Выбрать тип кода: в разделе «Информационные » выбрать пункт «Контакт vCard ». После этого появятся поля визитки, которые необходимо заполнить:
  • После заполнения можно сгенерировать код, кликнув на соответствующую кнопку, как было описано выше. Также можно настроить размер, формат и скачать двумерный штрих код:

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

Чтобы создать QR-код с логотипом, необходимо сначала создать обычный двумерный штрих код с любым возможным типом информации, будь то: текст, картинка, визитка, ссылка и т.д.

После генерации, creambee.ru дает возможность оригинально оформить полученное изображение кода. Пример разработки логотипа будет описан на ранее созданном QR-коде визитки:

  • После генерации кода, необходимо кликнуть по кнопке с «Оформить код »:
  • Откроется окно «Оформление QR-кода », в котором представлены инструменты: шаблоны, цвета, фигуры, экспорт:
  • Для того чтобы вставить логотип, его необходимо предварительно создать в графическом редакторе либо скачать из интернета и сохранить в файловой системе устройства. Кликнув по инструменту «правка », можно будет выбрать уровень избыточности. Это важный момент для возможности сканирования данного штрих кода, так как, если нанести на QR-код какое-либо изображение, то оно перекроет считываемую часть. Для нормальной же расшифровки кода с нанесенным логотипом, а также для сканирования с помощью неспециализированных устройств, информация дублируется. Поэтому, при внесении каких-то изменений на изображение кода, лучше установить избыточность на максимум:

«Кто чувствует собственную привлекательность, тот и становится привлекательным» - Иоганн Вольфганг Гёте

Для тех кому не терпится попробовать сделать цветной QR-код или сделать QR-код с логотипом или фоновой картинкой:

Каких результатов можно добиться, изменив оформление кода?

  1. Стать заметным . Выделиться на фоне однотипных QR-кодов – сделать работу кода более эффективной. К примеру, вы можете развернуть код(он прочитается), сделать его цветным, закруглить уголки, добавить тень и т.д.
  2. Дать подсказку . Добавив в сам код или рядом с ним немного текста, который сможет прочесть человеческий глаз, еще до того, как воспользуется камерой мобильного телефона. Сейчас QR-код только активно начинает захватывать рынки и потребители своими смартфонами сканируют все вподряд. Добавить немного текста хорошо, за исключением самых очевидных случаев. Если в QR-коде зашифрован адрес сайта, то можно его расположить под кодом или прямо на нем (тут осторожней).
  3. Акцентировать внимание на бренде . Т.к. QR-коды очень привлекательный элемент в рекламе, то естественно, если гармонично вписать его в фирменный стиль организации можно подкрепить и усилить силу бренда в сознании потребителей. К примеру, раскрасить в фирменные цвета, внедрить логотип в код, оформить сегменты продукцией (смотрите далее очень интересный код из продукции Panasonic).

Самое простое изменение, которое мы можем привнести в код, это поменять его цвет. По стандарту любой QR-код состоит всего из двух цветов — черного и белого. Мы можем заменить как один цвет, так и два цвета на те цвета которые будут решать поставленные задачи. Необходимо чтобы черный цвет после окрашивания остался более темный чем окрашенный белый. Причем после раскраски необходимо чтобы контраст между этими цветами был достаточно большим, чтобы камера, программное обеспечение, и встроенные алгоритмы телефона смогли считать и расшифровать его. В противном случае код перестанет считываться.


Усложняя алгоритм раскрашивания QR-кода мы приходим от линейных цветной заливки к градиентной заливки. Если вдруг вам еще не знаком термин “градиент”, то это плавный переход от одного цвета к другому. Другими словами градиентом может быть плавный переход от черного цвета к синему. Градиенты бывают линейными, радиальными, ромбовидными и других причудливых форм. Иногда правильным градиентом удается значительно улучшить визуальное восприятие QR-кода по сравнению с линейной цветной заливкой.


Еще одним способом оригинализации QR-кода является раскрашивание отдельных изолированных сегментов. Т.е. определенная группа смежных сегментов окрашивается в отдельный цвет. Часто можно встретить генераторы, красящие в отдельный цвет группы состоящие из единственного сегмента. Также в отдельный цвет иногда окрашивают центральные части угловых маркеров QR-кода. Также отдельные сегменты можно окрасить используя определенную текстуру. Не смотря на то что обычно для окраски используют не более двух цветов, можно встретить QR-коды похожие на радугу.


Следующим ходом на пути к оживлению QR-кода будет вставка фонового изображения. Здесь есть два пути по которым можно пойти. Первый путь — это вставка фоновой картинки на место черных сегментов, при этом картинка должны быть достаточно низкой яркости, чтобы контраст с белыми сегментами был высок. Это необходимо для корректного считывания кода. Второй путь — это подложка под белые сегменты кода. В этом случае напротив, яркость картинки должна быть высокой в контрасте с черными сегментами. Применяя данный подход можно получить достаточно интересные визуальные эффекты на QR-коде.


Закругленные углы сегментов QR-кода стали очень популярны, т.к. действительно такой код визуально выглядит намного привлекательней стандартного с квадратными сегментами. Используя данный метод трансформации кода необходимо выбрать радиус скругления и посмотреть на полученный результат. Часто этот метод используют в совокупности с одним из методов раскрашивания QR-кодов. Теоретически помимо скругления можно придумать другие варианты трансформации формы сегментов, но это может сказаться не самым лучшим образом на визуальном восприятии кода, а также качестве считывания его мобильными устройствами.


Технология QR-кодов разрабатывалась с учетом того что они будут считываться мобильными устройствами с камерами не самого лучшего качества в различных неблагоприятных условиях затрудняющих распознавание. Для того чтобы повысить качество распознавания при генерации QR-кодов используется технология избыточного кодирования. Т.е. часть информации на коде дублируется. И если какая-то часть кода повреждена, то он все равно может быть безболезненно считан и расшифрован. Данная технология сделала возможным нанесение непосредственно на QR-код текстовой надписи или логотипа. Например, на код можно нанести номер телефона, который в нем зашифрован, чтобы люди не имеющие возможности его отсканировать и распознать могли ввести этот номер вручную. Поэтому брендированные QR-коды с логотипами становятся все больше распространены. Надпись или логотип как правило вставляются в центральную часть кода.


Имея QR-код с повышенной помехозащищенностью мы можем встраивать в него любые изображения не перекрывающие код более чем на 30%. Часто такая изюминка в виде маленьких картинок на коде сильно меняют восприятие такого кода и повышают интерес к нему. Как правило, автоматическое встраивание таких изображений бывает невозможным, т.к. форма картинки может сильно зависеть от полученной конфигурации кода. Поэтому такого рода трансформации кода производятся дизайнерами в графических программных пакетах уже после того как код был создан генератором.


Очень простым, но действенным ухищрением может стать поворот QR-кода вокруг своей оси на 45 градусов. А имея красивое визуальное окружение можно сделать подобный код просто неотразимым для пользователей.

Анимированный QR-код

И апофеозом трансформации QR-кодов можно считать анимированные коды. Опять же благодаря технологии защиты от сбоев открываются большие возможности. Т.е. QR-код можно смотреть как видео-ролик при этом он не теряет способность быть считанным и расшифрованным. Не смотря на значительны расходы связанные с созданием подобного кода часто он бывает оправдан. Единственное ограничение такого рода кодов, что их нельзя распечатать. Т.е. сфера их применения это телевидение и интернет. Возможно в будущем видео на листе бумаги будет таким же обычным явлением как сейчас на телеэкране.

Что такое QR-код?

QR-код расшифровывается как «быстрый ответ», благодаря своей легкости и скорости. Это тип штрих-кода представленный символами, состоящими из черных пикселей на белом квадрате. Его можно считать при помощи приложения на смартфоне, чтобы получить дополнительную информацию.

Располагаясь на афишах концертов, упаковках продуктов, наклейках, уличных тротуарах, это — инструмент, объединяющий реальный и виртуальный мир. QR может передавать — ссылки, купоны, сведения о продукте и другую полезную для потребителя информацию.

QR-код VS Линейный код

Как и линейный, QR-код обладает своими функциями и особенностями, поэтому предлагаем рассмотреть три главных отличия:

Вид. Линейный код предполагает считывание информации в одном направлении — горизонтальном. QR-код относится к так называемым двухмерным кодам. Их расшифровка производится в двух направлениях — и по горизонтали, и по вертикали.

Объем информации. Линейные коды предназначены для передачи небольшого объема информации, так как были изначально разработаны для упрощения рабочих процессов. QR-код направлен на передачу значительно больших объемов. Существует даже издание «Евгений Онегин» А.С. Пушкина в QR-кодах.

Тип информации. С помощью линейного кода упрощаются процессы инвентаризации, контроля за товаром, документооборот, идентификация товара и т.д.

Тогда как QR-коды можно использовать вполне масштабно, например во время экскурсий, зашифровав под ними информацию о туристических объектах.

Поэтому однозначно утверждать о преимуществах того или иного кода невозможно, все зависит от задачи которую вы решаете их использованием.

Как работает QR код?

Первоначально разработанный в Японии компанией Denso-Wave для отслеживания пути запасных частей на заводе, после обнародования маркетологи приняли QR-код в обиход, в основном из-за его объемного хранилища и способности переводить дополнительную информацию для потребителей за пределы стандартной упаковки продукта.

Подобный код фотографируется с помощью встроенной камеры устройства, которая расшифровывает его с использованием предварительно установленного приложения.

Для чего добавлять лого в QR?

Выбрав в качестве изображения для кода вы привяжете код к компании и визуально и информационно, привлекая большее количество клиентов.

Используйте четкий без размытостей, помещая его в центр кода. Так можно избежать препятствий для чтения элементов самого кода. должно дополнять код, и не мешать его сканированию.

Как создать QR-Code с логотипом?

Существуют различные варианты создания QR-кодов с лого, но самый доступный, простой и не требующий специальных навыков способ, это — онлайн сервисы.

Предлагаем вам ознакомиться с подборкой сервисов, которые позволят сделать QR с логотипом всего за пару минут.

— популярный бесплатный генератор QR-кода. Для его создания вам достаточно сделать несколько простых шагов

  • Добавить URL вашего сайта

  • Выбрать цвета кода.

  • Подобрать дизайн кода.

  • Загрузите свой , не забыв отметить галочкой отсутствие фона за ним. Это делается чтоб код можно было нормально сканировать.

  • Сгенерируйте код и сохраните в нужном вам формате.

В результате вы получаете код, который можно использовать всего через пару минут.

Unitag QR Code generator

Unitag — это еще одна программа создания QR-кода, которая предоставляет возможность создавать, управлять и отслеживать коды с пользовательскими цветами и логотипами. Это простое и экономичное программное обеспечение для создания интеллектуальных кодов с учетом всех потребностей, с динамическим целевым контентом. Кроме того вы можете настроить дизайн и URL-адреса, получить коды HD.

Этапы создания кода проходят по схожому с QR Monkey принципу.

Qrcode-pro

Qrcode-pro — этот генератор также предлагает широкую цветовую палитру для кода и возможность добавления . Механизм создания похож на другие сервисы из подборки, но функционал немного урезан.

Еще не обзавелись фирменным знаком?

Не беда, ведь это это можно исправить всего за 10 минут. Заходите в онлайн сервис Логастер и забирайте свой новый логотип через несколько кликов мышью.