Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ QR-ΠΊΠΎΠ΄Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ QR-ΠΊΠΎΠ΄Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

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

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

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ QR-ΠΊΠΎΠ΄Ρ‹

Для Π½Π°Ρ‡Π°Π»Π°, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ qrcode. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Pillow, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ всС Ρ€Π°Π·ΠΎΠΌ:

pip install qrcode[pil]

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π΄Π°ΠΆΠ΅ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это прямо Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.

qr "https://okumy.com/" > okumy.png

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

image

Π’ Python ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ qrcode.make():

import qrcode


img = qrcode.make('https://okumy.com/')
type(img)  # qrcode.image.pil.PilImage
img.save("okumy.png")

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Она автоматичСски сгСнСрируСт QR-ΠΊΠΎΠ΄Ρ‹ с ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€Π½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. ΠžΡΡ‚Π°Π½Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΈΡ… Π½Π° Π½Π°ΠΊΠ»Π΅ΠΉΠΊΠ°Ρ… Π² блиТайшСм ΠΊΠΎΠΏΠΈΡ†Π΅Π½Ρ‚Ρ€Π΅. Π”ΠΎΠΊΡƒΠΏΠΈΠ² ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ с Π½ΠΎΠΌΠ΅Ρ€Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ.

import qrcode


def main():
    start = int(input('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€:'))
    stop = int(input('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ послСдний Π½ΠΎΠΌΠ΅Ρ€:'))
    for i in range(start, stop + 1):
        value = '#' + str(i).rjust(8, '0')
        qrcode.make(value).save(value + '.png')


if __name__ == '__main__':
    main()

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€Π½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ списаниСм прямо с Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°.

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ QR-ΠΊΠΎΠ΄Ρ‹

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ большСго, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ классом qrcode.QRCode. Он позволяСт Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

import qrcode


qr = qrcode.QRCode(
    version=10,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=15,
    border=6,
)
qr.add_data('https://okumy.com/')
qr.make(fit=True)

img = qr.make_image(fill_color=(75, 0, 75), back_color=(190, 190, 255)).save('ok.png')

version β€” число ΠΎΡ‚ 1 Π΄ΠΎ 40, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π΅ Π·Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ поля QR-ΠΊΠΎΠ΄Π°. Π•Π΄ΠΈΠ½ΠΈΡ†Π° Π·Π°Π΄Π°Π΅Ρ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ 21 Π½Π° 21 ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚. None позволяСт автоматичСски ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€.

error_correction β€” опрСдСляСт ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ QR-ΠΊΠΎΠ΄Π°, допустимый ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ошибок. Π’Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚ 7% (ERROR_CORRECT_L) Π΄ΠΎ 30% (ERROR_CORRECT_H), ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - 15%.

box_size β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² Π² пиксСлях.

border β€” опрСдСляСт Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹. НС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мСньшС 4 (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).

fill_color, black_color β€” это Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ². Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… контрастными, ΠΈΠ½Π°Ρ‡Π΅ ΠΊΠ°ΠΌΠ΅Ρ€Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° Π½Π΅ смоТСт ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ QR-ΠΊΠΎΠ΄. Помимо тСкста, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ RGB-ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ.

image

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

ΠœΠΎΠ΄ΡƒΠ»ΡŒ qrcode позволяСт Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄Ρ‹ Π² Python ΠΈΠ»ΠΈ прямо ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Базовая функция make() позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄ Π² ΠΎΠ΄Π½Ρƒ строку, Π° использованиС класса QRCode ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π­Ρ‚ΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ мноТСство самых Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΎΡ‚ эффСктной Ρ€Π΅ΠΊΠ»Π°ΠΌΡ‹ Π΄ΠΎ Π³Ρ€Π°Ρ„Ρ„ΠΈΡ‚ΠΈ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…
ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Π‘Ρ‚Π°Π½ΡŒΡ‚Π΅ junior Python программистом Π·Π° 7 мСсяцСв

 7 мСсяцСв

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ интСрСсно

Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ интроспСкции Π² Python Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠΈ
ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ
Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ интроспСкции Π² Python

Π˜Π½Ρ‚Ρ€ΠΎΡΠΏΠ΅ΠΊΡ†ΠΈΡ β€” это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΈ структуру ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

2022-11-13