Beispiel #1
0
    def createData(typeNumber, errorCorrectLevel, dataList):

        rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel)

        buffer = QRBitBuffer()

        for i in range(len(dataList)):
            data = dataList[i]
            buffer.put(data.mode, 4)
            buffer.put(data.getLength(),
                QRUtil.getLengthInBits(data.mode, typeNumber))
            data.write(buffer)

        # calc num max data.
        totalDataCount = 0
        for i in range(len(rsBlocks)):
            totalDataCount += rsBlocks[i].dataCount

        if (buffer.getLengthInBits() > totalDataCount * 8):
            raise DataOverflowError("Code length overflow. Data size (%s) > "
                "size available (%s)" % (buffer.getLengthInBits(),
                    totalDataCount * 8))

        # end code
        if (buffer.getLengthInBits() + 4 <= totalDataCount * 8):
            buffer.put(0, 4)

        # padding
        while (buffer.getLengthInBits() % 8 != 0):
            buffer.putBit(False)

        # padding
        while True:

            if (buffer.getLengthInBits() >= totalDataCount * 8):
                break
            buffer.put(QRCode.PAD0, 8)

            if (buffer.getLengthInBits() >= totalDataCount * 8):
                break
            buffer.put(QRCode.PAD1, 8)

        return QRCode.createBytes(buffer, rsBlocks)