Exemplo n.º 1
0
        def showqrcode(w, treeview, liststore):
            path, col = treeview.get_cursor()
            if not path: return
            address = liststore.get_value(liststore.get_iter(path), 0)
            qr = pyqrnative.QRCode(4, pyqrnative.QRErrorCorrectLevel.H)
            qr.addData(address)
            qr.make()
            boxsize = 7
            size = qr.getModuleCount() * boxsize

            def area_expose_cb(area, event):
                style = area.get_style()
                k = qr.getModuleCount()
                for r in range(k):
                    for c in range(k):
                        gc = style.black_gc if qr.isDark(r,
                                                         c) else style.white_gc
                        area.window.draw_rectangle(gc, True, c * boxsize,
                                                   r * boxsize, boxsize,
                                                   boxsize)

            area = gtk.DrawingArea()
            area.set_size_request(size, size)
            area.connect("expose-event", area_expose_cb)
            area.show()
            dialog = gtk.Dialog(address,
                                parent=self.window,
                                flags=gtk.DIALOG_MODAL
                                | gtk.DIALOG_NO_SEPARATOR,
                                buttons=("ok", 1))
            dialog.vbox.add(area)
            dialog.run()
            dialog.destroy()
Exemplo n.º 2
0
def QRcode(data_string, file_name=None):
    #import os
    quality = {
        1: pyqrnative.QRErrorCorrectLevel.L,
        2: pyqrnative.QRErrorCorrectLevel.M,
        3: pyqrnative.QRErrorCorrectLevel.Q,
        4: pyqrnative.QRErrorCorrectLevel.H
    }
    size = 4
    level = 1
    file_name = file_name or "1111.png"
    while 1:
        #print size
        try:
            q = pyqrnative.QRCode(size, quality[level])
            q.addData(data_string)
            q.make()
            break
        except TypeError:
            size += 1
    x = q.makeImage()
    #qr_file = os.path.join('C:/web2py/applications/ipay10/static', file_name)
    qr_file = file_name
    img_file = open(qr_file, 'wb')
    x.save(img_file, 'PNG')
    img_file.close()
Exemplo n.º 3
0
 def update_qr(self):
     if self.addr and not self.qr:
         for size in range(len(pyqrnative.QRUtil.PATTERN_POSITION_TABLE)): # [4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]:
             try:
                 self.qr = pyqrnative.QRCode(size, pyqrnative.QRErrorCorrectLevel.L)
                 self.qr.addData(self.addr)
                 self.qr.make()
                 break
             except:
                 self.qr=None
                 continue
         self.update()
Exemplo n.º 4
0
def make_bitmap(addr):
    # fixme: this is highly inefficient
    droid.dialogCreateSpinnerProgress("please wait")
    droid.dialogShow()
    try:
        import pyqrnative, bmp
        qr = pyqrnative.QRCode(4, pyqrnative.QRErrorCorrectLevel.L)
        qr.addData(addr)
        qr.make()
        k = qr.getModuleCount()
        assert k == 33
        bmp.save_qrcode(qr, "/sdcard/sl4a/qrcode.bmp")
    finally:
        droid.dialogDismiss()
Exemplo n.º 5
0
def print_tx(tx):
    for i in range(1, 20):
        try:
            qr = qrlib.QRCode(i, 0)
            qr.addData(tx)
            qr.make()
            break
        except qrlib.CodeOverflowException:
            if i < 20:
                continue
            else:
                raise Exception("Too much data for QR Code")
    Q = qr.export_modules()
    print_qr_array(Q)
Exemplo n.º 6
0
 def run(self, data, version=5, ecl=0):
     self.qr = qrlib.QRCode(version, ecl)
     self.qr.addData(data)
     self.qr.make()
     Q = np.array(self.qr.export_modules())
     return Q
Exemplo n.º 7
0
import ugfx
import math
import pyqrnative
# up to level 27 (125x125px) can be displayed
qr = pyqrnative.QRCode(2, pyqrnative.QRErrorCorrectLevel.Q)
qr.addData("https://sha2017.org/")
qr.make()
max_x = max_y = qr.getModuleCount()
matrix = qr.modules

disp_x, disp_y = (296, 128)
block_size = math.floor(disp_y / max_y)
offset_x = int(disp_x / 2) - int(block_size * max_y / 2)
offset_y = int(disp_y / 2) - int(block_size * max_x / 2)

ugfx.init()
ugfx.clear(ugfx.WHITE)
for y, row in enumerate(matrix):
    for x, col in enumerate(row):
        if qr.isDark(x, y):
            ugfx.area(offset_x + x * block_size, offset_y + y * block_size,
                      block_size, block_size, ugfx.BLACK)
ugfx.flush()