🐍🎨 ГСнСрация красивых QR-ΠΊΠΎΠ΄ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого руководства Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Segno для создания красивых QR-ΠΊΠΎΠ΄ΠΎΠ².

Данная ΡΡ‚Π°Ρ‚ΡŒΡ являСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ. Бсылка Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π».

Π’ классичСском Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ QR-ΠΊΠΎΠ΄ прСдставляСт собой Ρ‡Π΅Ρ€Π½Ρ‹Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Π±Π΅Π»ΠΎΠΌ Ρ„ΠΎΠ½Π΅ ΠΈ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ любой смартфон ΠΈΠ»ΠΈ устройство со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ QR-сканСром. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΡˆΡ‚Ρ€ΠΈΡ…-ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ информация располагаСтся Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ, Π² QR-ΠΊΠΎΠ΄Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² Π΄Π²ΡƒΡ… измСрСниях ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сто Ρ€Π°Π· большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π’ этом руководствС Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ:

  • ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹ΠΉ QR-ΠΊΠΎΠ΄
  • ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ поля Π² QR-ΠΊΠΎΠ΄Π΅
  • ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚Π½Ρ‹Π΅ QR-ΠΊΠΎΠ΄Ρ‹
  • Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄
  • Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ статичный Ρ„ΠΎΠ½ Π½Π° Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ GIF-ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ QR-ΠΊΠΎΠ΄Ρ‹ Π±Ρ‹Π»ΠΈ, Π² основном, Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹ΠΌΠΈ. БСгодня ΠΆΠ΅, благодаря творчСским инновациям, QR-ΠΊΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ Ρ†Π²Π΅Ρ‚Π°. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΡƒΡ…Ρ†Π²Π΅Ρ‚Π½Ρ‹Π΅ QR-ΠΊΠΎΠ΄Ρ‹, Π½ΠΎ ΠΈ красочныС ΠΈ худоТСствСнныС – Ρ‚ΠΎΠ³Π΄Π° это руководство для вас.

🐍 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста»
πŸπŸ’Ό Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° собСса ΠΏΠΎ Python
ΠŸΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ свои знания ΠΏΠΎ Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° собСса ΠΏΠΎ PythonΒ»
🧩🐍 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Python
Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Python для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ PythonΒ»

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Python для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ QR-ΠΊΠΎΠ΄Π°

Для Π½Π°Ρ‡Π°Π»Π° создадим Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹ΠΉ QR-ΠΊΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ содСрТимоС. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΠΎΠΌΡƒ руководству, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Segno – ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Python для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ QR-ΠΊΠΎΠ΄ΠΎΠ². Для установки Segno ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ pip Π² вашСй ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС:

$ python -m pip install segno

ПослС установки Segno создайтС Ρ„Π°ΠΉΠ» Python, Π½Π°Π·Π²Π°Π² Π΅Π³ΠΎ basic_qrcode.py. Для создания Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ³ΠΎ QR-ΠΊΠΎΠ΄Π°, содСрТащСго Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ make_qr(). Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ созданиС ΠΏΠΎΠ»Π½ΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ QR-ΠΊΠΎΠ΄Π°, ΠΈ СдинствСнным ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ – это информация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

β•ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ make() для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° QR-ΠΊΠΎΠ΄, Π½ΠΎ Π² зависимости ΠΎΡ‚ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ содСрТимого ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠΈΠΊΡ€ΠΎ-QR-ΠΊΠΎΠ΄. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ руководства ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ малСньким QR-ΠΊΠΎΠ΄ΠΎΠΌ. Для ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ создания ΠΏΠΎΠ»Π½ΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ QR-ΠΊΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ make_qr().

QR-ΠΊΠΎΠ΄Ρ‹ способны ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π±ΡƒΠΊΠ²Π΅Π½Π½ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ, символы ΠΈ Π΄Π°ΠΆΠ΅ URL. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ QR-ΠΊΠΎΠ΄ΠΎΠ² Π½Π° Python, для Π½Π°Ρ‡Π°Π»Π° создайтС QR-ΠΊΠΎΠ΄ с Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ тСкстом "Hello, World":

basic_qrcode.py
# basic_qrcode.py

import segno

segno.make_qr("Hello, World")

На Π΄Π°Π½Π½ΠΎΠΌ этапС Π²Ρ‹ написали ΠΊΠΎΠ΄, Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π² тСкст "Hello, World", ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ make_qr(). Он Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ этим тСкстом ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π΅ΠΌΡƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска "Hello, World" Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ³ΠΎ QR-ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ содСрТимоС Π² качСствС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ .save(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ QR-ΠΊΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ изобраТСния. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ qrcode, ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ тСкст "Hello, World" Π² Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ QR-ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π»Π΅Π΅ сохраняСтся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ PNG-Ρ„Π°ΠΉΠ»Π° basic_qrcode.png:

basic_qrcode.py
# basic_qrcode.py

import segno

qrcode = segno.make_qr("Hello, World")
qrcode.save("basic_qrcode.png")

ΠœΠ΅Ρ‚ΠΎΠ΄ .save() ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ QR-ΠΊΠΎΠ΄ Π² Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Π²Π°ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π°, Ссли ΠΎΠ½ поддСрТиваСтся. Когда Π²Ρ‹ примСняСтС ΠΌΠ΅Ρ‚ΠΎΠ΄ .save() ΠΊ созданной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ содСрТимым, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ„Π°ΠΉΠ»Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄Π° сохраняСтся Π² Ρ„Π°ΠΉΠ» с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ basic_qrcode.png Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅, Π³Π΄Π΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄, поэтому ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅, Ρ‚ΠΎ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .save() Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ.

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ описанных шагов для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ³ΠΎ QR-ΠΊΠΎΠ΄Π° Π² basic_qrcode.py Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Python-скрипт ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки:

$ python basic_qrcode.py

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ, Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹ΠΉ QR-ΠΊΠΎΠ΄ с тСкстом "Hello, World", ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ make_qr() ΠΈ .save(). Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ запускался ваш ΠΊΠΎΠ΄. Или Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄Π° с изобраТСния Π½ΠΈΠΆΠ΅:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ·-Π·Π° Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, поэтому ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡƒΠ½ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ – Ρ€Π°Π·ΠΌΠ΅Ρ€ вашСго Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ QR-ΠΊΠΎΠ΄Π°.

ИзмСнСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° QR-ΠΊΠΎΠ΄Π°

Для настройки Ρ€Π°Π·ΠΌΠ΅Ρ€Π° QR-ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ scale Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ .save(). ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ scale – это коэффициСнт ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту изобраТСния QR-ΠΊΠΎΠ΄Π°.

Для справки – стандартноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° scale Ρ€Π°Π²Π½ΠΎ 1. Когда Π²Ρ‹ создавали свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ QR-ΠΊΠΎΠ΄ Π² basic_qrcode.py, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±Π΅Π»ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° Π² QR-ΠΊΠΎΠ΄Π΅ составлял ΠΎΠ΄ΠΈΠ½ пиксСль Π² ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ ΠΎΠ΄ΠΈΠ½ пиксСль Π² высоту. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих Ρ‡Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π±Π΅Π»Ρ‹Ρ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² называСтся ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ΄Π°, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄, содСрТащий Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ тСкст "Hello, World", Π³Π΄Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ модуля составляСт 5x5 пиксСлСй:

scaled_qrcode.py
# scaled_qrcode.py

import segno

qrcode = segno.make_qr("Hello, World")
qrcode.save(
    "scaled_qrcode.png",
    scale=5,
)

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ создали Python-Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ scaled_qrcode.py ΠΈ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .save() Π·Π°Π΄Π°Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ scale=5. Для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ этого Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ³ΠΎ QR-ΠΊΠΎΠ΄Π° с коэффициСнтом ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ€Π°Π²Π½Ρ‹ΠΌ пяти, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ scaled_qrcode.py ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки:

$ python scaled_qrcode.py

ΠžΡ‚Π»ΠΈΡ‡Π½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°! Π’Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ своих ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ .save() ΠΊ QR-ΠΊΠΎΠ΄Ρƒ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ scale, Ρ€Π°Π²Π½Ρ‹ΠΌ 5. Π’Π°Ρˆ QR-ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π½ΠΈΠΆΠ΅:

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π½ΠΎ Ссли ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пустоС пространство. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ это пустоС пространство.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ QR-ΠΊΠΎΠ΄Π°

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ процСсс сканирования QR-ΠΊΠΎΠ΄Π° Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΈ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ устройства, ΠΊΠ°ΠΊ смартфоны, смогут Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Segno оставляСт Π²ΠΎΠΊΡ€ΡƒΠ³ QR-ΠΊΠΎΠ΄Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пустоС пространство. Π­Ρ‚ΠΎ пустоС мСсто называСтся Β«ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½ΠΎΠΉΒ».

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ этой Β«ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½Ρ‹Β», ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ border Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .save().

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ поля Π²ΠΎΠΊΡ€ΡƒΠ³ QR-ΠΊΠΎΠ΄Π°, ΡƒΠΊΠ°Π·Π°Π² цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ border Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .save(). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€ Β«ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½Ρ‹Β» составляСт Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ модуля с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ стороны.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·ΠΎΠ½Ρƒ, Ρ‚ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π·Π°Π΄Π°Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ border=0 Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .save(). Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅ Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ вашСго QR-ΠΊΠΎΠ΄Π°:

borderless_qrcode.py
# borderless_qrcode.py

import segno

qrcode = segno.make_qr("Hello, World")
qrcode.save(
    "borderless_qrcode.png",
    scale=5,
    border=0,
)

Π’Ρ‹ создали Python-скрипт с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ borderless_qrcode.py ΠΈ установили Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° border Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .save() Ρ€Π°Π²Π½Ρ‹ΠΌ 0. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ пустых областСй Π²ΠΎΠΊΡ€ΡƒΠ³ QR-ΠΊΠΎΠ΄Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄ с Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ тСкстом "Hello, World" Π±Π΅Π· Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΈ с коэффициСнтом ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ€Π°Π²Π½Ρ‹ΠΌ 5, запуститС Π² вашСй ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Ρ„Π°ΠΉΠ» borderless_qrcode.py:

$ python borderless_qrcode.py

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ ΡƒΠ±Ρ€Π°Π»ΠΈ Β«ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·ΠΎΠ½ΡƒΒ» Π² своСм QR-ΠΊΠΎΠ΄Π΅. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΎΡ‚ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ своСго QR-ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅:

Если Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Β«ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½Ρ‹Β» ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΡƒΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ QR-ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ border. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, для создания QR-ΠΊΠΎΠ΄Π° с Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ ΠΈΠ· дСсяти Π±Π΅Π»Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ border=10 Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .save():

# wide_border_qrcode.py

import segno

qrcode = segno.make_qr("Hello, World")
qrcode.save(
    "wide_border_qrcode.png",
    scale=5,
    border=10,
)

Π’Π°Ρˆ Python-скрипт с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ wide_border_qrcode.py, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ устанавливаСтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° border Ρ€Π°Π²Π½Ρ‹ΠΌ 10 Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ .save(), сгСнСрируСт QR-ΠΊΠΎΠ΄ с отступом Π² Π΄Π΅ΡΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄ с Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ тСкстом "Hello, World" Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 5x5 пиксСлСй ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ, запуститС Ρ„Π°ΠΉΠ» wide_border_qrcode.py ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки:

$ python wide_border_qrcode.py

Π’Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали PNG-Ρ„Π°ΠΉΠ» с QR-ΠΊΠΎΠ΄ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 5x5 пиксСлСй ΠΈ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ ΠΈΠ· дСсяти ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΅Π³ΠΎ:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ QR-ΠΊΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ Π±Π΅Π»Ρ‹ΠΉ Ρ„ΠΎΠ½ ΠΈ Ρ†Π²Π΅Ρ‚ Β«ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½Ρ‹Β» Ρ‚ΠΎΠΆΠ΅ Π±Π΅Π»Ρ‹ΠΉ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΡƒΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Π²ΠΎΠΊΡ€ΡƒΠ³ QR-ΠΊΠΎΠ΄Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, придСтся ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’ ΠΈΠ΄Π΅Π°Π»Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½Ρ‹. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ красочныС QR-ΠΊΠΎΠ΄Ρ‹. Π’Ρ‹ смоТСтС ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½Ρ‹ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

ИзмСнСниС Ρ†Π²Π΅Ρ‚Π° QR-ΠΊΠΎΠ΄Π°

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄Ρ‹ с вашими Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΌΠΈ Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ, Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ .save() располагаСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ваши ΠΊΠΎΠ΄Ρ‹ Π±ΠΎΠ»Π΅Π΅ красочными. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°, Ρ‚ΠΈΡ…ΠΎΠΉ Π·ΠΎΠ½Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ свСтлых ΠΈ Ρ‚Π΅ΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π²Π°ΡˆΠΈΡ… QR-ΠΊΠΎΠ΄ΠΎΠ². ВсС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ – это ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ RGB, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (#RRGGBB).

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° Π½Π° свСтло-Π³ΠΎΠ»ΡƒΠ±ΠΎΠΉ, Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ light="lightblue" Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ .save():

# lightblue_qrcode.py

import segno

qrcode = segno.make_qr("Hello, World")
qrcode.save(
    "lightblue_qrcode.png",
    scale=5,
    light="lightblue",
)

Π’Ρ‹ создали Python-скрипт ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ lightblue_qrcode.py ΠΈ установили Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ lightblue Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ light Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .save(). Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ Π±Π΅Π»Ρ‹ΠΉ Ρ„ΠΎΠ½ Π½Π° свСтло-Π³ΠΎΠ»ΡƒΠ±ΠΎΠΉ.

Для справки: ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° Π½Π° RGB ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Если Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ свСтло-Π³ΠΎΠ»ΡƒΠ±ΠΎΠΉ Ρ„ΠΎΠ½ Π² RGB-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Ρ‚ΠΎΠ³Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ light="lightblue" Π½Π° light=(173, 216, 230). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ light="lightblue" Π½Π° light="#ADD8E6".

Π’Ρ‹ смоТСтС ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄ со свСтло-Π³ΠΎΠ»ΡƒΠ±Ρ‹ΠΌ Ρ„ΠΎΠ½ΠΎΠΌ, запустив Ρ„Π°ΠΉΠ» lightblue_qrcode.py Π² вашСй ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС:

$ python lightblue_qrcode.py

Π‘ΡƒΠΏΠ΅Ρ€! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ красивый свСтло-Π³ΠΎΠ»ΡƒΠ±ΠΎΠΉ Ρ„ΠΎΠ½, Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π·ΠΎΠ½Π° стала Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠΉ. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ собствСнного Ρ‚Ρ€ΡƒΠ΄Π° ΠΈ отсканируйтС ваш QR-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅:

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚Π° всСх Ρ‡Π΅Ρ€Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ QR-ΠΊΠΎΠ΄Π°. Для этого Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ dark Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .save(). НапримСр, Π² ΠΊΠΎΠ΄Π΅ Π½ΠΈΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Ρ†Π²Π΅Ρ‚ Ρ‚Π΅ΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π½Π° Ρ‚Π΅ΠΌΠ½ΠΎ-синий:

# darkblue_qrcode.py

import segno

qrcode = segno.make_qr("Hello, World")
qrcode.save(
    "darkblue_qrcode.png",
    scale=5,
    dark="darkblue",
)

Π’Π°Ρˆ скрипт установит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ всСх Ρ‡Π΅Ρ€Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² Ρ‚Π΅ΠΌΠ½ΠΎ-синий Ρ†Π²Π΅Ρ‚. Для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ этого QR-ΠΊΠΎΠ΄Π° запуститС Ρ„Π°ΠΉΠ» darkblue_qrcode.py ΠΈΠ· вашСй ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки:

$ python darkblue_qrcode.py

Π’ этой ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ QR-ΠΊΠΎΠ΄ с Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ тСкстом "Hello, World", ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅ΠΌΠ½ΠΎ-синиС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ вмСсто классичСских Ρ‡Π΅Ρ€Π½Ρ‹Ρ…:

Π’ этот Ρ€Π°Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π·ΠΎΠ½Π° Π½Π΅ Ρ‚Π°ΠΊ Π·Π°ΠΌΠ΅Ρ‚Π½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ„ΠΎΠ½ Π±Π΅Π»ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°. На самом Π΄Π΅Π»Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹. Π’Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°, ΡƒΠΊΠ°Π·Π°Π² Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ light Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .save().

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΈΠ· настроСк Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ вашСго QR-ΠΊΠΎΠ΄Π° – ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ добавлСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° quiet_zone Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ .save(). НиТС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ измСнСния Π² Ρ„Π°ΠΉΠ»Π΅ darkblue_qrcode.py ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ†Π²Π΅Ρ‚ пространства Π²ΠΎΠΊΡ€ΡƒΠ³ QR-ΠΊΠΎΠ΄Π° с Π±Π΅Π»ΠΎΠ³ΠΎ Π½Π° Π±ΠΎΡ€Π΄ΠΎΠ²Ρ‹ΠΉ:

# darkblue_qrcode.py

import segno

qrcode = segno.make_qr("Hello, World")
qrcode.save(
    "darkblue_qrcode.png",
    scale=5,
    dark="darkblue",
    quiet_zone="maroon",
)

Если Π²Ρ‹ снова запуститС Ρ„Π°ΠΉΠ» darkblue_qrcode.py ΠΈΠ· вашСй ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ‚ΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ создан QR-ΠΊΠΎΠ΄ с Π±ΠΎΡ€Π΄ΠΎΠ²Ρ‹ΠΌΠΈ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ:

Π”ΠΎ сих ΠΏΠΎΡ€ Π²Ρ‹ использовали ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ light ΠΈ dark, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚Π° всСх Π±Π΅Π»Ρ‹Ρ… ΠΈ Ρ‡Π΅Ρ€Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ QR-ΠΊΠΎΠ΄Π°. Однако Π½Π΅ всС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ QR-ΠΊΠΎΠ΄Π° содСрТат Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Π°ΡˆΠΈΡ… QR-ΠΊΠΎΠ΄ΠΎΠ², Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠΎΠ΄ΡƒΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… – это Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, собствСнно, ΠΈ хранятся Π΄Π°Π½Π½Ρ‹Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Ρ‚Π΅ΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… QR-ΠΊΠΎΠ΄Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° data_dark Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .save(). К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Ρ‚Π΅ΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π·Π΅Π»Π΅Π½Ρ‹ΠΉ, Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Python-скрипт green_datamodules_qrcode.py ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ data_dark=green Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .save():

# green_datadark_qrcode.py

import segno

qrcode = segno.make_qr("Hello, World")
qrcode.save(
    "green_datadark_qrcode.png",
    scale=5,
    light="lightblue",
    dark="darkblue",
    data_dark="green",
)

Π”ΠΎΠ±Π°Π²ΠΈΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ data_dark Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ .save() ΠΈ установив Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ green, Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ†Π²Π΅Ρ‚ Ρ‚Π΅ΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π·Π΅Π»Π΅Π½Ρ‹ΠΉ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ всСх Ρ‚Π΅ΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π½Π΅ содСрТащих Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π° Ρ‚Π΅ΠΌΠ½ΠΎ-синий. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ это, Π΄ΠΎΠ±Π°Π²ΠΈΠ² dark="darkblue". Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ свСтло-Π³ΠΎΠ»ΡƒΠ±ΠΎΠΉ Ρ„ΠΎΠ½, Π΄ΠΎΠ±Π°Π²ΠΈΠ² light="lightblue" Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ .save().

Для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ QR-ΠΊΠΎΠ΄Π° с Ρ‚Π΅ΠΌΠ½Ρ‹ΠΌΠΈ модулями Π΄Π°Π½Π½Ρ‹Ρ… Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°, запуститС Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Ρ„Π°ΠΉΠ» green_datadark_qrcode.py:

$ python green_datadark_qrcode.py

Π‘ΡƒΠΏΠ΅Ρ€, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΈΡ… модулях Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅! Они Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ярким Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½ΠΈΠΆΠ΅:

Для измСнСния Ρ†Π²Π΅Ρ‚Π° Π±Π΅Π»Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ data_light с Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ .save(). Для измСнСния Ρ†Π²Π΅Ρ‚Π° свСтлых ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° свСтло-Π·Π΅Π»Π΅Π½Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ data_light="lightgreen":

# green_datamodules_qrcode.py

import segno

qrcode = segno.make_qr("Hello, World")
qrcode.save(
    "green_datamodules_qrcode.png",
    scale=5,
    light="lightblue",
    dark="darkblue",
    data_dark="green",
    data_light="lightgreen",
)

Если Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ .save() внСсти Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ data_light ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ lightgreen, Ρ‚ΠΎ Ρ†Π²Π΅Ρ‚Π° свСтлых ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… измСнятся Π½Π° свСтло-Π·Π΅Π»Π΅Π½Ρ‹Π΅. Если снова Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Ρ„Π°ΠΉΠ» green_datamodules_qrcode.py, Ρ‚ΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ создан QR-ΠΊΠΎΠ΄ с Ρ‚Π΅ΠΌΠ½ΠΎ-синими, Π·Π΅Π»Π΅Π½Ρ‹ΠΌΠΈ ΠΈ свСтло-Π·Π΅Π»Π΅Π½Ρ‹ΠΌΠΈ модулями Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° свСтло-Π³ΠΎΠ»ΡƒΠ±ΠΎΠΌ Ρ„ΠΎΠ½Π΅:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой красочный QR-ΠΊΠΎΠ΄ "Hello, World" ΠΈΠ»ΠΈ ΠΎΡ‚ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄Π° Π²Ρ‹ΡˆΠ΅.

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ .save() для измСнСния Ρ†Π²Π΅Ρ‚ΠΎΠ² свСтлой ΠΈ Ρ‚Π΅ΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΎΠ² QR-ΠΊΠΎΠ΄ΠΎΠ². ΠŸΠΎΠΈΠ³Ρ€Π°ΠΉΡ‚Π΅ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ комбинациями Ρ†Π²Π΅Ρ‚ΠΎΠ², Π° ΠΏΠΎΠ»Π½Ρ‹ΠΉ список ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ для создания Ρ€Π°Π·Π½ΠΎΡ†Π²Π΅Ρ‚Π½Ρ‹Ρ… QR-ΠΊΠΎΠ΄ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Segno.

ИзмСнСниС Ρ†Π²Π΅Ρ‚ΠΎΠ² Ρ„ΠΎΠ½Π°, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½Ρ‹ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ QR-ΠΊΠΎΠ΄Π° – это ΠΎΡ‡Π΅Π½ΡŒ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄Ρ‹ для придания ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ руководства Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ .to_pil() для вращСния QR-ΠΊΠΎΠ΄ΠΎΠ².

Π’Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄Π°

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Segno Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ вашим QR-ΠΊΠΎΠ΄ΠΎΠΌ, поворачивая Π΅Π³ΠΎ ΠΈΠ»ΠΈ добавляя Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„ΠΎΠ½. Если Π²Π°ΠΌ нравится ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄Ρ‹ с ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ графичСскими функциями, Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ qrcode-artistic ΠΈ pillow:

$ python -m pip install pillow qrcode-artistic

Благодаря этим Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ, ΠΏΡ€ΠΈ создании QR-ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ make_qr() Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° – .to_pil() ΠΈ .to_artistic(). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ваш QR-ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² Pillow Image, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для вращСния QR-ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ статичСского Ρ„ΠΎΠ½Π° Π½Π° Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ QR-ΠΊΠΎΠ΄, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ .to_pil() ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° Π² градусах. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ тСкст "Hello, World", Π½ΠΎ ΠΏΡ€ΠΈ этом Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ свой QR-ΠΊΠΎΠ΄ Π½Π° 45 градусов:

# rotated_qrcode.py

import segno

qrcode = segno.make_qr("Hello, World")

qrcode_rotated = qrcode.to_pil().rotate(45)
qrcode_rotated.save("rotated_qrcode.png")

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .to_pil().rotate(). НаправлСниС вращСния – ΠΏΡ€ΠΎΡ‚ΠΈΠ² часовой стрСлки. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ .to_pil() ΠΈ ΡƒΠΊΠ°Π·Π°Π² ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .rotate(), Π²Ρ‹ написали ΠΊΠΎΠ΄ для создания Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ³ΠΎ QR-ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ Π½Π° 45 градусов. И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π²Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ .save() ΠΊ своСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ qrcode_rotated.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ rotated_qrcode.py ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ получится:

$ python rotated_qrcode.py

Он Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΎΠ²Π°Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ Π½Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ (ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ), Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вашС ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ QR-ΠΊΠΎΠ΄ усСчСн. Π’ частности, ΠΎΠ±Ρ€Π΅Π·Π°Π½Ρ‹ ΡƒΠ³Π»Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ это, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ Ρ†Π΅Π»Ρ‹ΠΌ, Ρ‚ΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .to_pil().rotate() ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ expand ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True. Код Π½ΠΈΠΆΠ΅ ΠΏΠΎΠ²Π΅Ρ€Π½Π΅Ρ‚ QR-ΠΊΠΎΠ΄ Π½Π° сорок ΠΏΡΡ‚ΡŒ градусов ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° вСсь ΠΊΠΎΠ΄:

# rotated_qrcode.py

import segno

qrcode = segno.make("Hello, World")

qrcode_rotated = qrcode.to_pil().rotate(45, expand=True)
qrcode_rotated.save("rotated_qrcode.png")

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΡƒΠ³ΠΎΠ» ΠΈ установили Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ expand=True Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ to_pil().rotate() для создания Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ³ΠΎ QR-ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ Π½Π° 45 градусов ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ…. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ примСняСтС ΠΌΠ΅Ρ‚ΠΎΠ΄ .save() ΠΊ вашСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ qrcode_rotated ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ Π΅ΠΉ имя Ρ„Π°ΠΉΠ»Π° с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ.

Для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ этого QR-ΠΊΠΎΠ΄Π° снова запуститС ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Ρ„Π°ΠΉΠ» rotated_qrcode.py:

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ QR-ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ Π² scaled_qrcode.py ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° ΠΊΠ°ΠΊ Π² lightblue_qrcode.py. Однако Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ QR-ΠΊΠΎΠ΄, Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° scale ΠΈΠ»ΠΈ light Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ .save() Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° QR-ΠΊΠΎΠ΄Π°. Π₯отя всС выглядит ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ, Π½Π° самом Π΄Π΅Π»Π΅ Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ .save() Π½Π° PIL, Π° Π½Π΅ Π½Π° QR-ΠΊΠΎΠ΄.

Π’Π°ΠΊ ΠΊΠ°ΠΊ для ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° QR-ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ .to_pil(), Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ Ρ†Π²Π΅Ρ‚ QR-ΠΊΠΎΠ΄Π° Π² .to_pil(). НиТС Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ коэффициСнт ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ 5 ΠΊ QR-ΠΊΠΎΠ΄Ρƒ ΠΈ Ρ†Π²Π΅Ρ‚ Ρ‚Π΅ΠΌΠ½Ρ‹Ρ… частСй QR-ΠΊΠΎΠ΄Π° измСнился Π½Π° Π·Π΅Π»Π΅Π½Ρ‹ΠΉ, Π° свСтлых – Π½Π° свСтло-Π³ΠΎΠ»ΡƒΠ±ΠΎΠΉ:

# formatted_rotated_qrcode.py

import segno

qrcode = segno.make_qr("Hello, World")
qrcode_rotated = qrcode.to_pil(
    scale=5,
    light="lightblue",
    dark="green",
).rotate(45, expand=True)
qrcode_rotated.save("formatted_rotated_qrcode.png")

Для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° QR-ΠΊΠΎΠ΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ scale. Для измСнСния Ρ†Π²Π΅Ρ‚Π° свСтлых ΠΈ Ρ‚Π΅ΠΌΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² QR-ΠΊΠΎΠ΄Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .to_pil() вводятся Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ light ΠΈ dark.

Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ QR-ΠΊΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ пустоС пространство Π²Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½Ρ‹ Π²ΠΎΠΊΡ€ΡƒΠ³ QR-ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΠ½ накладываСтся Π½Π° ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ QR-ΠΊΠΎΠ΄. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚Π° Ρ‚Π΅ΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, которая ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚ΠΎΠΆΠ΅ чСрная, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° dark Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .to_pil(), Π·Π°Π΄Π°Π² любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ†Π²Π΅Ρ‚.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 5x5 пиксСлСй со свСтло-Π³ΠΎΠ»ΡƒΠ±Ρ‹ΠΌ Ρ„ΠΎΠ½ΠΎΠΌ, Π·Π΅Π»Π΅Π½Ρ‹ΠΌΠΈ Ρ‚Π΅ΠΌΠ½Ρ‹ΠΌΠΈ модулями ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ„ΠΎΠ½ΠΎΠΌ, запуститС ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Ρ„Π°ΠΉΠ» formatted_rotated_qrcode.py:

$ python formatted_rotated_qrcode.py

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ QR-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° QR-ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ этого руководства Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ .to_artistic(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ статичСский Ρ„ΠΎΠ½ Π½Π° Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… QR-ΠΊΠΎΠ΄ΠΎΠ²

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ этого руководства Π²Ρ‹ создадитС самый красивый QR-ΠΊΠΎΠ΄, Π·Π°ΠΌΠ΅Π½ΠΈΠ² статичный Ρ„ΠΎΠ½ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ GIF-ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Для этого потрСбуСтся нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… этапов, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚ΠΎΠ³ΠΎ стоит.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄ с Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° Ρ„ΠΎΠ½Π΅, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ – это ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Python-Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ animated_qrcode.py. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ прСдставлСно созданиС QR-ΠΊΠΎΠ΄Π° со ссылкой Π½Π° YouTube Π½Π° пСсню Smells like Teen Spirit Π³Ρ€ΡƒΠΏΠΏΡ‹ Nirvana:

# animated_qrcode.py

import segno

slts_qrcode = segno.make_qr("https://www.youtube.com/watch?v=hTWKbfoikeg")

Π’Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ написали ΠΊΠΎΠ΄ для создания QR-ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ make_qr(). Π­Ρ‚ΠΎΡ‚ QR-ΠΊΠΎΠ΄ ссылаСтся Π½Π° ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ пСсню Smells like Teen Spirit ΠΈΠ»ΠΈ сокращСнно SLTS Π½Π° YouTube. Π’Ρ‹ сохраняСтС этот QR-ΠΊΠΎΠ΄ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ slts_qrcode.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ шаг, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ – это ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ изобраТСния. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· URL-адрСса, Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ urlopen() ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ urllib. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС этот шаг ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ:

# animated_qrcode.py

import segno
from urllib.request import urlopen

slts_qrcode = segno.make_qr("https://www.youtube.com/watch?v=hTWKbfoikeg")
nirvana_url = urlopen("https://media.giphy.com/media/LpwBqCorPvZC0/giphy.gif")

Ѐункция urlopen() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния URL-адрСсов, ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ ссылку Π½Π° GIF-ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠšΡƒΡ€Ρ‚Π° КобСйна, ΡƒΠ²Π»Π΅Ρ‡Π΅Π½Π½ΠΎ ΠΈΠ³Ρ€Π°ΡŽΡ‰Π΅Π³ΠΎ Π½Π° Π³ΠΈΡ‚Π°Ρ€Π΅. Π’Ρ‹ сохраняСтС Π΅Π΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ nirvana_url. Π­Ρ‚ΠΎΡ‚ шаг ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ локальноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

ПослСдний шаг – это ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .to_artistic() ΠΊ QR-ΠΊΠΎΠ΄Ρƒ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ статичСский Ρ„ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ QR-ΠΊΠΎΠ΄ с модулями Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 5x5 пиксСлСй, Ρ„ΠΎΠ½ΠΎΠΌ для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ слуТит Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠšΡƒΡ€Ρ‚Π° КобСйна, ΠΌΠ°ΡˆΡƒΡ‰Π΅Π³ΠΎ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ:

# animated_qrcode.py

import segno
from urllib.request import urlopen

slts_qrcode = segno.make_qr("https://www.youtube.com/watch?v=hTWKbfoikeg")
nirvana_url = urlopen("https://media.giphy.com/media/LpwBqCorPvZC0/giphy.gif")
slts_qrcode.to_artistic(
    background=nirvana_url,
    target="animated_qrcode.gif",
    scale=5,
)

Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .to_artistic() Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ background, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈΠ»ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ с Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Ρ…Ρ€Π°Π½ΡΡ‰ΡƒΡŽ URL-адрСс изобраТСния. Π’ качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° target ΡƒΠΊΠ°Π·Π°Π½ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΈ имя Ρ„Π°ΠΉΠ»Π° изобраТСния QR-ΠΊΠΎΠ΄Π°. Если Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ QR-ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, установив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° scale Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .to_artistic().

ΠŸΡ€ΠΈ создании худоТСствСнных QR-ΠΊΠΎΠ΄ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ QR-ΠΊΠΎΠ΄ Π² formatted_rotated_qrcode.py ΠΈ QR-ΠΊΠΎΠ΄ с Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Ρ„ΠΎΠ½ΠΎΠΌ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ .save() для форматирования Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΠ»ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ² QR-ΠΊΠΎΠ΄Π°. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ худоТСствСнный QR-ΠΊΠΎΠ΄, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² .to_artistic().

Для создания GIF-Ρ„Π°ΠΉΠ»Π° с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ animated_qrcode.gif Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅, Π³Π΄Π΅ выполняСтся ΠΊΠΎΠ΄, Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС запускаСтся Ρ„Π°ΠΉΠ» animated_qrcode.py:

$ python formatted_rotated_qrcode.py

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ .to_artistic() ΠΊ QR-ΠΊΠΎΠ΄Ρƒ ΠΈ устанавливая Π² качСствС значСния background URL-адрСс Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ изобраТСния, Π²Ρ‹ создаСтС QR-ΠΊΠΎΠ΄, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ мСчущийся ΠšΡƒΡ€Ρ‚ КобСйн:

Если ΠΎΡ‚ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅ ΠΈΠ»ΠΈ вашС локальноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ вас ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ Π½Π° страницу YouTube с ΠΊΠ»ΠΈΠΏΠΎΠΌ Π³Ρ€ΡƒΠΏΠΏΡ‹ Nirvana "Smells like Teen Spirit".

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ поняли ΠΊΠ°ΠΊ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄Ρ‹ Π² Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Segno, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ красивыС QR-ΠΊΠΎΠ΄Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹Π΅ QR-ΠΊΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊ ΠΈ худоТСствСнныС QR-ΠΊΠΎΠ΄Ρ‹ с Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ ΠΈ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Ρ„ΠΎΠ½Π°ΠΌΠΈ.

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ:

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ make_qr() ΠΈ .save() для создания Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹Ρ… QR-ΠΊΠΎΠ΄ΠΎΠ²
  • Π Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ модуля ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·ΠΎΠ½Ρƒ QR-ΠΊΠΎΠ΄Π°
  • Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅ΠΌΠ½Ρ‹Π΅ ΠΈ свСтлыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ²
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ .to_pil().rotate() для ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° QR-ΠΊΠΎΠ΄ΠΎΠ²
  • Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄Ρ‹ с Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Ρ„ΠΎΠ½ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ .to_artistic()

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ посмотритС Π½Π° Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹ΠΉ QR-ΠΊΠΎΠ΄, Π²Ρ‹ смоТСтС ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ мноТСствС способов использования Segno для создания ΠΊΡ€Π΅Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… QR-ΠΊΠΎΠ΄ΠΎΠ², ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°ΡŽΡ‰ΠΈΡ… Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠŸΠΎΠ»ΡƒΡ‡Π°ΠΉΡ‚Π΅ ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ ΠΎΡ‚ создания собствСнных красивых QR-ΠΊΠΎΠ΄ΠΎΠ² Π½Π° Python.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

admin
11 дСкабря 2018

ООП Π½Π° Python: ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python допускаСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ Π² Π΅Π³ΠΎ основС...
admin
28 июня 2018

3 самых Π²Π°ΠΆΠ½Ρ‹Ρ… сфСры примСнСния Python: возмоТности языка

БущСствуСт мноТСство областСй примСнСния Python, Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ особСнно...
admin
13 фСвраля 2017

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python: ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° Π΄ΠΎ профСссионала

Пошаговая инструкция для всСх, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒΒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python...