Как сгенерировать уникальные пропуски для мероприятий с QR-кодом с помощью Python
Организаторам мероприятий требуются надежные системы управления доступом, чтобы обеспечить безопасный вход для посетителей. Традиционная продажа бумажных билетов сопряжена с такими рисками, как подделка, дублирование и отсутствие контроля доступа после первого использования. Современные решения, такие как цифровые пропуска на основе QR-кода, обеспечивают повышенную безопасность, улучшенную аналитику и больший контроль.
В этой статье представлено пошаговое руководство по использованию Python для создания уникальных пропусков с QR-кодом для мероприятий любого масштаба. В нем описан сквозной процесс - от генерации рандомизированных QR-кодов до их плавной интеграции с пользовательскими дизайнами пропусков – с акцентом на простоту и удобство для начинающих.
Генерация уникальных QR-кодов
Первым шагом является программная генерация QR-кодов со случайными строками данных, чтобы обеспечить уникальность каждого прохода. Мы будем использовать библиотеку qrcode Python:
import qrcode
import random
for i in range(100):
num = random.randint(0, 9999999999999999999)
data = f'ticket_no:{str(num)}'
qr = qrcode.make(data)
qr.save(f'./result/myQr{str(i)}.png')
Это создает 100 QR-кодов с номерами билетов от 0 до 999 триллионов, сохраняя каждое изображение QR-кода с последовательным именем файла.
Мы добавляем проверки действительности, чтобы гарантировать отсутствие генерирования повторяющихся кодов:
import pymongo
client = MongoClient(MONGO_URL)
db = client['<database_name>']
for i in range(100):
num = random.randint(0, 9999999999999999999)
data = f'ticket_no:{str(num)}'
# Check if QR code exists
temp = db.tickets.find_one({"qr": data})
if(temp):
print("Duplicate QR Code")
continue
# Generate and save QR
qr = qrcode.make(data)
db.tickets.insert_one({"qr": data, "checkIn": False})
Это подключается к базе данных MongoDB, которая проверяет, существует ли случайно сгенерированный код, прежде чем создавать и сохранять данные QR-кода.
Интеграция QR-кодов в дизайн билетов
Большинство билетов требуют интеграции QR-кода в индивидуальный графический дизайн с подробностями мероприятия, элементами брендинга и т.д.
Мы используем библиотеку PIL на Python, чтобы программно объединить визуальный дизайн билета и сгенерировать QR-код в единое изображение билета:
from PIL import Image
qr = qrcode.make('<QR_CODE_DATA>')
qr.save("myQr.png")
img1 = Image.open("myQr.png")
img2 = Image.open("./ticket_design.png")
# Create canvas matching max width and height
new_height = max(img1.height, img2.height)
new_width = img1.width + img2.width
new_image = Image.new('RGB', (new_width, new_height))
# Paste images side by side
new_image.paste(img1, (0,0))
new_image.paste(img2, (img1.width, 0))
new_image.save("final_ticket.png")
Этот скрипт открывает QR-код и фоновый дизайн билета, определяет оптимальные размеры и вставляет оба изображения рядом в конечный файл билета.
Генерация масштабируемого билета
Объединение описанных выше процедур в функции позволяет вам быстро генерировать любое количество уникально закодированных заявок в пакетном режиме, динамически настраивая такие элементы, как дизайн заявки, текст и т.д:
for i in range(100):
# Generate QR Code
qr_data = generate_qr()
# Create Ticket
create_ticket(qr_data, design, text)
Добавление параметризованных входных данных, проверок достоверности и обработки ошибок обеспечивает дополнительные возможности контроля и автоматизации.
Вывод
Это руководство представляет собой удобное для начинающих введение в использование Python для создания надежных цифровых пропусков на мероприятия. Автоматизация уникальности и интеграция пользовательских дизайнов помогают масштабировать управление безопасным доступом к мероприятиям любого масштаба без ущерба для бренда или пользовательского опыта.
Поскольку от бумажных билетов все чаще отказываются в пользу решений на основе сканируемых QR-кодов, обладание этими навыками в качестве организатора мероприятий может обеспечить надежное будущее и упростить контроль доступа посетителей, одновременно открывая творческие возможности для вовлечения сообщества.
Если вам нравится моя работа и вы хотите помочь мне продолжать публиковать подобный контент, угостите меня чашечкой кофе.
Если вы находите этот пост захватывающим, найдите еще больше интересных постов в блоге Learnhub; мы пишем обо всех технологиях - от облачных вычислений до разработки интерфейсов, кибербезопасности, искусственного интеллекта и блокчейна.
Ресурс
- Начало работы с Folium
- 20 основных расширений Python для кода Visual Studio
- Использование Python для парсинга веб-страниц и извлечения данных
- Начало работы с Python
- Создание интерактивных карт с помощью Folium и Python