Генератор QR кодов:Olej писал(а): 2-й из таких пакетов - PyQRNative, в своё время продвигаемый и популяризируемый Google.
Код: Выделить всё
# -*- coding: utf-8 -*-
import sys
import argparse
import PyQRNative
from PyQRNative import *
# QR generator using PyQRNative
ap = argparse.ArgumentParser() # construct the argument parse and parse the arguments
ap.add_argument( "-o", "--output", required = False, help = "path to the output image file" )
ap.add_argument( "-v", nargs='?', const=True, required=False, help = "increased verbose level" )
ap.add_argument( "-s", nargs='?', const=True, required=False, help = "single line" )
args = vars( ap.parse_args() )
#print( args )
debug = args[ "v" ] != None # verbose level
#print( sys.stdin.isatty() )
s = u''
if args[ "s" ] != None: # single line input
if sys.stdin.isatty():
sys.stdout.write( 'get line (Enter for finishing): ' )
sys.stdout.flush()
s = sys.stdin.readline()
if s[ len( s ) - 1 ] == '\n':
s = s[ :-1 ]
else: # multi line input
if sys.stdin.isatty():
print( 'Enter text (^D for finishing)' )
while True:
l = sys.stdin.readline()
if l == '': break # ^D - завершение ввода (EOF)
s += l.decode( 'utf-8' )
#print( type( s ), len( s ), s )
if 2 == sys.version_info.major:
b = bytes( s )
else:
b = bytes( s, encoding = 'utf-8' )
#print( type( b ), b )
def makeQR( data, path, level = 1 ):
quality= { 1: PyQRNative.QRErrorCorrectLevel.L,
2: PyQRNative.QRErrorCorrectLevel.M,
3: PyQRNative.QRErrorCorrectLevel.Q,
4: PyQRNative.QRErrorCorrectLevel.H }
size = 3
while 1:
try:
q = PyQRNative.QRCode( size, quality[ level ] )
q.addData( data )
q.make()
im = q.makeImage()
im.save( path, format = "png" )
break
except TypeError:
size += 1
if debug: print( 'increase size: {}'.format( size ) )
if debug: print( 'size = {}'.format( size ) )
return im
image = makeQR( b, 'qr1.png', level = 1 )
if args[ "output" ] != None:
ifile = open( args[ "output" ] + '.jpg', 'wb' )
image.save( ifile, 'JPEG' )
ifile.close()
if debug:
image.show()