mirror of
https://github.com/littlecodersh/ItChat.git
synced 2026-10-18 22:50:37 +08:00
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
from PIL import Image
|
|
import sys, os
|
|
|
|
QR_DIR = '.'
|
|
try:
|
|
b = u'\u2588'.encode(sys.stdin.encoding)
|
|
sys.stdout.write(b + '\r')
|
|
sys.stdout.flush()
|
|
except:
|
|
BLOCK = 'MM'
|
|
else:
|
|
BLOCK = b
|
|
|
|
class QRCode():
|
|
def __init__(self, fileName, size, padding = 0, background = 'BLACK'):
|
|
self.size = size
|
|
self.padding = padding
|
|
self.img = Image.open(fileName)
|
|
self.times = self.img.size[0]/(size + padding * 2)
|
|
self.rgb = self.img.convert('RGB')
|
|
self.white = BLOCK if background == 'BLACK' else ' '
|
|
self.black = ' ' if background == 'BLACK' else BLOCK
|
|
def print_qr(self):
|
|
sys.stdout.write(' '*50 + '\r')
|
|
sys.stdout.flush()
|
|
print(self.white * (self.size + 2))
|
|
startPoint = self.padding + 0.5
|
|
for y in range(self.size):
|
|
sys.stdout.write(self.white)
|
|
for x in range(self.size):
|
|
r,g,b = self.rgb.getpixel(((x + startPoint) * self.times, (y + startPoint) * self.times))
|
|
sys.stdout.write(self.white if r > 127 else self.black)
|
|
print(self.white)
|
|
print(self.white * (self.size + 2))
|
|
|
|
if __name__ == '__main__':
|
|
# 37 is for picture size without padding, 3 is padding
|
|
q = QRCode(os.path.join(os.path.pardir, 'log', 'QR.jpg'), 37, 3, 'BLACK')
|
|
q.print_qr()
|