Files
2016-07-15 16:49:24 +08:00

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()