profile
viewpoint

lixar/CLTokenInputView 0

A replica of iOS's native contact bubbles UI

nmccann/Adafruit_SSD1306 0

Adafruit_SSD1306 library ported for Spark

nmccann/CGFloatType 0

Provides various methods and functions to deal with CGFloat on 64-bit systems (CGFLOAT_IS_DOUBLE).

nmccann/CLTokenInputView 0

A replica of iOS's native contact bubbles UI

nmccann/CocoaPods 0

The Objective-C library dependency manager.

nmccann/Core 0

The models used within the cocoapods gem

nmccann/ErrorKit 0

iOS library for making NSError handling easier

nmccann/fastlane 0

The easiest way to automate building and releasing your iOS and Android apps

nmccann/later 0

A javascript library for defining recurring schedules and calculating future (or past) occurrences for them. Includes support for using English phrases and Cron schedules. Works in Node and in the browser.

issue commentNaturalHistoryMuseum/pyzbar

Unable to decode QR data

Something I missed is that in addition to the fork, you need to have at least v0.23.1 of ZBar which adds support for binary QR codes (pyzbar just wraps ZBar). See the release notes for that version here: https://github.com/mchehab/zbar/releases/tag/0.23.1

There have been other versions released since then, but I don’t think they’re specifically needed for this.

MayankFawkes

comment created time in 12 days

issue commentNaturalHistoryMuseum/pyzbar

Unable to decode QR data

@MayankFawkes I can confirm that the first QR code is readable and unzippable, while the second is readable but not unzippable (I get a "bad magic number" error). I've encountered something similar with Indian QR codes, I suspect that the QR Code creation library that they are using is doing something very particular that other libraries don't do. Specifically, they appear to be using this library: QRCode.react which internally is using this very old (and seemingly no longer supported) JS library: QR.js. I think there is something specific that the old library is doing that more modern ones wouldn't be doing.

Here is an example of the content of the two QR codes:

First (works)

b'PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00certificate.json\x8cT\xdbr\xea8\x10\xfc\x15j\x1e\xb7\x1c\xe2\x0b`\xf0\xcbn\x02Ip\xc25\x06\x12\xd8:\x95\x12\xf2\x18+\xb1%\x90d\x08I\xf1\xef[29\xb9l\x9d\xec\x1e\xde\xa4\xe9i\r\xdd\xedy\x85\xbf\xa8\xe0\x1a\x9f5\x04\x7fC\xaa\xf5Z\x05\xa7\xa7\xbb\xdd\xae\xba\xf3\xaaB\xaeN]\xdbi\x9eR\x891r\xcdH\xa6N\xb7\x0eX\xef@*v\x8cWWb[e\xfc+\x8aP\xca8\xd1Lp\xd3\xf1\xc3\x02\xbd_\xa3yc\x86\x92%\x8c,3l\xbf\xe3\xc1\x82\x91\x14"\x19&\xb3\x8f\xbeO\xe5\x1f\x16|\x90G\xc5\xf2\x11\xa9\x86\xe0\xf5\x8d\x13F(\x95\xe0`\x01\x8b!\x80\x98\xc5\xc1\x19\x89SBd\xa5Md\x1c\xfc\xf1\xf6\xf3\x9bu\x0f,\x90\x98\x84\x06\xe7\xda^\xddnx\x8e\xed\xf9\r\xbb\x01\x16p\x92\x1b\xb6\x01bF\xf2\xcaU\xb1\xd6\x04,(\xd2\x92\x15,X!\x8fQB\x00\x97\x98\x93\x0c\xc1\x02\xb22\r5\xbfl63\x93\x8c\xe9=\x04\x10\xf2\x98\x113\x11\x89c\x89J\x99a\x95\x96\x88\xfa\xec\xe7\x85a\xfcr\xe5\x1e\xefb\xa6\xb4d\xe6\xff\x99\x13=\xf2}0\xdd\xe2\x8a\t\xfe\xe5\xaa-\n\xaee\xf9\xec\x00,X\x0b\xa5I\xd6\x161BP\xf3\xeb\x8d\x86s8X\xc0\x94*\xca\xe1\x7fi\x1d\x1c\x01\x84S\xec\x10\x8d\xa5:\xaesb\xfb\'\xb63\xb1[\x81c\x075\xaf\xea\xd4[\x0b\xb0\x00\xb7,FN\x8d\x9b\xafG\xc9\x7f\xc9y\x8c\x00\x9e\xfav\xddn\xf9\x9e\xe79&9\tb\xbc$\xf4i*\xb3\xef\x1a\xff\xfc\xda\xc1x"~\x1fMQj\x960J4\x96.\x7f\xad\xbe\x87\xf0#f&\\K\xa2ij\x9ct\\g\xe18&%o\xd3C\x00\xed\xe1,\x8c\xba\xe1E\xaf\x03\x16\xe4\x84\x17\t\xa1\xba\x90\xa5\x98\x11\xca"\xaf\x84\\i\xa6\x0b\x8d\x15\x91TJ\xeb\x8d\x8f\xdf\xe9\xe8V]\xd7-uL\x12\xa4\x9am1\xd2D\xea/\xd8\xcf\xd5)\xd7,\xfbw5\x16\n!p-\xd0B\x93\xac#\x14\xaa\xf2\xb8-\xbf.3\xdb\xeb\xcf<Gd\xc94\xa9L\x98\\\x13\x9d28X\x90\x10\xca\x8eI\xfd\x84\x92\xa8vD\xb3JDS!\xb2\xff\xce\xee\xa8\x90\x84\xb3J[d\x19R-QWn\xb02B\xa4)\xfe\x7f\xac;D\x97\n}\x9f\xed>\x89\xd3=\xa9\x8c$\x89Q\xa5\xbf\x95t\x80\xc3\xe1\xf0\xc3\x02.\xf8D\x12\xae\x12\x94f\xc7@\x00Z\x16f\xa8\xb5Y0\x9f\x96\xc6\xad"\x11[qb\xac4K\x0e\xca\x1dC4\xc6\xbfN\xbfq\xec\xa8.-s\xd3G\x9d\x8a\x9f\xfb\x86\xbd\x99^>2*\xe4\xba\xb4\x07\x88R&\x8e\xef`\x0b\x1ewF>\xdc_\xa7\xcb+\xca\x86\xecz<}\t\x9d\x01\x0bU\x98\x87\xee\xa0\x1d6\x16\xf9\xa5\xa2\xeeT\x85\xf9`O\xee\xc7l\x98)6\x7f\x9c\xdba\xe6\xb4\xaa\xd5\xae\xda4\xf8\x00y\xebeY\x9b\xe9\x99\xdc\xbaw\xe3\xab\xf0E\xd3l>\xa6Y4\xbe\x15\xf3\x1eN\x16\x17\xf5\xbe\xff\xe8D=1\x8c\xf8\xd0\x11\x8b\xd9\xd6\xcb\x9f\xf2n\x9fN\xecfm\xb4f\xdd\xe2Ye\xce\x9a8q\xfd\x8a7\xc4\xb5?\xdd\xc4x6\x9b\x8c\xe6\xc5\xa2\xcb\x9e\x87\x8e\xdf\xbc|\xbe\xdcm\xe2\x8b\x19\xe6\xc9\xddK\xba\xb8q\xc9no7\xdc:\xb9\x1fz\xf3\xb0\xd5\xcc\xe5\xcbx\xe0\xdd\xef\x1f\x84\x9d.\xf4]\x83\\r{\x92\xde\xa5\xb7E3\xdf\xad\x99-\x9f\xe4\xdd\xed0\xec\xd1\x87h\xaa\xf7\xad\r\x1fv\xf0<z\x9c\xc7\xf5eQ\xdc\x9d\xf7Z[}\xe3\xf7{\xc5m[\xcd\xc6\xd1P=\xac\x1a\xed\xf9\xd6\xaf\xe9\xf3\xa6\xde\xd8\xbb\ro\xb5\x9ennpy6~(\n\xe6\xb5\xe3Q=Zgu\xe7eR\xd0\x93\xf3\xfe6;y\xb8\xe9\xcd/6+\xb7\xa3\xe3\xdcn?/\xfd\xe1<\xbd\xdc\xb3\xf9=\xbd~\xecy\xeet\x1aw\xead?+\xa6\x99\x87\xf6D$\xb55\x9d5\x8a\xae\xee.g\xb5\xc9\xf4\xac\xef\x9f\x0c\xcf\xf5|~>Y\xc1\xe1\xf0O\x00\x00\x00\xff\xffPK\x07\x08\xc3\xfc\xcb!\xef\x03\x00\x00\t\x07\x00\x00PK\x01\x02\x14\x00\x14\x00\x08\x00\x08\x00\x00\x00\x00\x00\xc3\xfc\xcb!\xef\x03\x00\x00\t\x07\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00certificate.jsonPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x00>\x00\x00\x00-\x04\x00\x00\x00\x00'

Second (doesn't work)

b'PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00certificate.json\xc2\x8cT\xc3\x9br\xc3\xaa8\x10\xc3\xbc\x15j\x1e\xc2\xb7\x1c\xc3\xa2\x0b`\xc3\xb0\xc3\x8bn\x02Ip\xc3\x825\x06\x12\xc3\x98:\xc2\x95\x12\xc3\xb2\x18+\xc2\xb1%\xc2\x90d\x08I\xc3\xb1\xc3\xaf[29\xc2\xb9l\xc2\x9d\xc3\xac\x1e\xc3\x9e\xc2\xa4\xc3\xa9i\r\xc3\x9d\xc3\xady\xc2\x85\xc2\xbf\xc2\xa8\xc3\xa0\x1a\xc2\x9f5\x04\x7fC\xc2\xaa\xc3\xb5Z\x05\xc2\xa7\xc2\xa7\xc2\xbb\xc3\x9d\xc2\xae\xc2\xba\xc3\xb3\xc2\xaaB\xc2\xaeN]\xc3\x9bi\xc2\x9eR\xc2\x891r\xc3\x8dH\xc2\xa6N\xc2\xb7\x0eX\xc3\xaf@*v\xc2\x8cWWb[e\xc3\xbc+\xc2\x8aP\xc3\x8a8\xc3\x91Lp\xc3\x93\xc3\xb1\xc3\x83\x02\xc2\xbd_\xc2\xa3yc\xc2\x86\xc2\x92%\xc2\x8c,3l\xc2\xbf\xc3\xa3\xc3\x81\xc2\x82\xc2\x91\x14"\x19&\xc2\xb3\xc2\x8f\xc2\xbeO\xc3\xa5\x1f\x16|\xc2\x90G\xc3\x85\xc3\xb2\x11\xc2\xa9\xc2\x86\xc3\xa0\xc3\xb5\xc2\x8d\x13F(\xc2\x95\xc3\xa0`\x01\xc2\x8b!\xc2\x80\xc2\x98\xc3\x85\xc3\x81\x19\xc2\x89SBd\xc2\xa5Md\x1c\xc3\xbc\xc3\xb1\xc3\xb6\xc3\xb3\xc2\x9bu\x0f,\xc2\x90\xc2\x98\xc2\x84\x06\xc3\xa7\xc3\x9a^\xc3\x9dnx\xc2\x8e\xc3\xad\xc3\xb9\r\xc2\xbb\x01\x16p\xc2\x92\x1b\xc2\xb6\x01bF\xc3\xb2\xc3\x8aU\xc2\xb1\xc3\x96\x04,(\xc3\x92\xc2\x92\x15,X!\xc2\x8fQB\x00\xc2\x97\xc2\x98\xc2\x93\x0c\xc3\x81\x02\xc2\xb22\r5\xc2\xbfl63\xc2\x93\xc2\x8c\xc3\xa9=\x04\x10\xc3\xb2\xc2\x98\x113\x11\xc2\x89c\xc2\x89J\xc2\x99a\xc2\x95\xc2\x96\xc2\x88\xc3\xba\xc3\xac\xc3\xa7\xc2\x85a\xc3\xbcr\xc3\xa5\x1e\xc3\xafb\xc2\xa6\xc2\xb4d\xc3\xa6\xc3\xbf\xc2\x99\x13=\xc3\xb2}0\xc3\x9d\xc3\xa2\xc2\x8a\t\xc3\xbe\xc3\xa5\xc2\xaa-\n\xc2\xaee\xc3\xb9\xc3\xac\x00,X\x0b\xc2\xa5I\xc3\x96\x161BP\xc3\xb3\xc3\xab\xc2\x8d\xc2\x86s8X\xc3\x80\xc2\x94*\xc3\x8a\xc3\xa1\x7fi\x1d\x1c\x01\xc2\x84S\xc3\xac\x10\xc2\x8d\xc2\xa5:\xc2\xaesb\xc3\xbb\'\xc2\xb63\xc2\xb1[\xc2\x81c\x075\xc2\xaf\xc3\xaa\xc3\x94[\x0b\xc2\xb0\x00\xc2\xb7,FN\xc2\x8d\xc2\x9b\xc2\xafG\xc3\x89\x7f\xc3\x89y\xc2\x8c\x00\xc2\x9e\xc3\xbav\xc3\x9dn\xc3\xb9\xc2\x9e\xc3\xa79&9\tb\xc2\xbc$\xc3\xb4i*\xc2\xb3\xc3\xaf\x1a\xc3\xbf\xc3\xbc\xc3\x9a\xc3\x81x"~\x1fMQj\xc2\x960J4\xc2\x96.\x7f\xc2\xad\xc2\xbe\xc2\x87\xc3\xb0#f&\\K\xc2\xa2ij\xc2\x9ct\\g\xc3\xa18&%o\xc3\x93C\x00\xc3\xad\xc3\xa1,\xc2\x8c\xc2\xba\xc3\xa1E\xc2\xaf\x03\x16\xc3\xa4\xc2\x84\x17\t\xc2\xa1\xc2\xba\xc2\x90\xc2\xa5\xc2\x98\x11\xc3\x8a"\xc2\xaf\xc2\x84\\i\xc2\xa6\x0b\xc2\x8d\x15\xc2\x91TJ\xc3\xab\xc2\x8d\xc2\x8f\xc3\x9f\xc3\xa9\xc3\xa8V]\xc3\x97-uL\x12\xc2\xa4\xc2\x9am1\xc3\x92D\xc3\xaa/\xc3\x98\xc3\x8f\xc3\x95)\xc3\x97,\xc3\xbbw5\x16\n!p-\xc3\x90B\xc2\x93\xc2\xac#\x14\xc2\xaa\xc3\xb2\xc2\xb8-\xc2\xbf.3\xc3\x9b\xc3\xab\xc3\x8f<Gd\xc3\x894\xc2\xa9L\xc2\x98\\\x13\xc2\x9d28X\xc2\x90\x10\xc3\x8a\xc2\x8eI\xc3\xbd\xc2\x84\xc2\x92\xc2\xa8vD\xc2\xb3JDS!\xc2\xb2\xc3\xbf\xc3\x8e\xc3\xae\xc2\xa8\xc2\x90\xc2\x84\xc2\xb3J[d\x19R-QWn\xc2\xb02B\xc2\xa4)\xc3\xbe\x7f\xc2\xac;D\xc2\x97\n}\xc2\x9f\xc3\xad>\xc2\x89\xc3\x93=\xc2\xa9\xc2\x8c$\xc2\x89Q\xc2\xa5\xc2\xbf\xc2\x95t\xc2\x80\xc3\x83\xc3\xa1\xc3\xb0\xc3\x83\x02.\xc3\xb8D\x12\xc2\xae\x12\xc2\x94f\xc3\x87@\x00Z\x16f\xc2\xa8\xc2\xb5Y0\xc2\x9f\xc2\x96\xc3\x86\xc2\xad"\x11[qb\xc2\xac4K\x0e\xc3\x8a\x1dC4\xc3\x86\xc2\xbfN\xc2\xbfq\xc3\xac\xc2\xa8.-s\xc3\x93G\xc2\x9d\xc2\x8a\xc2\x9f\xc3\xbb\xc2\x86\xc2\xbd\xc2\x99^>2*\xc3\xa4\xc2\xba\xc2\xb4\x07\xc2\x88R&\xc2\x8e\xc3\xaf`\x0b\x1ewF>\xc3\x9c_\xc2\xa7\xc3\x8b+\xc3\x8a\xc2\x86\xc3\xacz<}\t\xc2\x9d\x01\x0bU\xc2\x98\xc2\x87\xc3\xae\xc2\xa0\x1d6\x16\xc3\xb9\xc2\xa5\xc2\xa2\xc3\xaeT\xc2\x85\xc3\xb9`O\xc3\xae\xc3\x87l\xc2\x98)6\x7f\xc2\x9c\xc3\x9ba\xc3\xa6\xc2\xb4\xc2\xaa\xc3\x95\xc2\xae\xc3\x9a4\xc3\xb8\x00y\xc3\xabeY\xc2\x9b\xc3\xa9\xc2\x99\xc3\x9c\xc2\xbaw\xc3\xa3\xc2\xab\xc3\xb0E\xc3\x93l>\xc2\xa6Y4\xc2\xbe\x15\xc3\xb3\x1eN\x16\x17\xc3\xb5\xc2\xbe\xc3\xbf\xc3\xa8D=1\xc2\x8c\xc3\xb8\xc3\x90\x11\xc2\x8b\xc3\x99\xc3\x96\xc3\x8b\xc2\x9f\xc3\xb2n\xc2\x9fN\xc3\xacfm\xc2\xb4f\xc3\x9d\xc3\xa2Ye\xc3\x8e\xc2\x9a8q\xc3\xbd\xc2\x8a7\xc3\x84\xc2\xb5?\xc3\x9d\xc3\x84x6\xc2\x9b\xc2\x8c\xc3\xa6\xc3\x85\xc2\xa2\xc3\x8b\xc2\x9e\xc2\x87\xc2\x8e\xc3\x9f\xc2\xbc|\xc2\xbe\xc3\x9cm\xc3\xa2\xc2\x8b\x19\xc3\xa6\xc3\x89\xc3\x9dK\xc2\xba\xc2\xb8q\xc3\x89no7\xc3\x9c:\xc2\xb9\x1fz\xc3\xb3\xc2\xb0\xc3\x95\xc3\x8c\xc3\xa5\xc3\x8bx\xc3\xa0\xc3\x9d\xc3\xaf\x1f\xc2\x84\xc2\x9d.\xc3\xb4]\xc2\x83\\r{\xc2\x92\xc3\x9e\xc2\xa5\xc2\xb7E3\xc3\x9f\xc2\xad\xc2\x99-\xc2\x9f\xc3\xa4\xc3\x9d\xc3\xad0\xc3\xac\xc3\x91\xc2\x87h\xc2\xaa\xc3\xb7\xc2\xad\r\x1fv\xc3\xb0<z\xc2\x9c\xc3\x87\xc3\xb5eQ\xc3\x9c\xc2\x9d\xc3\xb7Z[}\xc3\xa3\xc3\xb7{\xc3\x85m[\xc3\x8d\xc3\x86\xc3\x91P=\xc2\xac\x1a\xc3\xad\xc3\xb9\xc3\x96\xc2\xaf\xc3\xa9\xc3\xb3\xc2\xa6\xc3\x9e\xc3\x98\xc2\xbb\ro\xc2\xb5\xc2\x9ennpy6~(\n\xc3\xa6\xc2\xb5\xc3\xa3Q=Zgu\xc3\xa7eR\xc3\x90\xc2\x93\xc3\xb3\xc3\xbe6;y\xc2\xb8\xc3\xa9\xc3\x8d/6+\xc2\xb7\xc2\xa3\xc3\xa3\xc3\x9cn?/\xc3\xbd\xc3\xa1<\xc2\xbd\xc3\x9c\xc2\xb3\xc3\xb9=\xc2\xbd~\xc3\xacy\xc3\xaet\x1aw\xc3\xaad?+\xc2\xa6\xc2\x99\xc2\x87\xc3\xb6D$\xc2\xb55\xc2\x9d5\xc2\x8a\xc2\xae\xc3\xae.g\xc2\xb5\xc3\x89\xc3\xb4\xc2\xac\xc3\xaf\xc2\x9f\x0c\xc3\x8f\xc3\xb5|~>Y\xc3\x81\xc3\xa1\xc3\xb0O\x00\x00\x00\xc3\xbf\xc3\xbfPK\x07\x08\xc3\x83\xc3\xbc\xc3\x8b!\xc3\xaf\x03\x00\x00\t\x07\x00\x00PK\x01\x02\x14\x00\x14\x00\x08\x00\x08\x00\x00\x00\x00\x00\xc3\x83\xc3\xbc\xc3\x8b!\xc3\xaf\x03\x00\x00\t\x07\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00certificate.jsonPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x00>\x00\x00\x00-\x04\x00\x00\x00\x00'
MayankFawkes

comment created time in 12 days

issue commentNaturalHistoryMuseum/pyzbar

Unable to decode QR data

I have a fork here which is able to read the provided QR code (and later unzip it, as per guidance on this blog post).

My fork incorporates the changes from this PR and this PR. The second PR seems to be the important part - it adds a binary parameter, which you can set to True for these kinds of QR codes.

Something I've found with these QR codes, is that it seems to be important to keep the data in bytes, when I convert it to a utf8 string and then back again (and I've tried a few different encodings), it results in corrupt data that can't be unzipped later.

Hopefully this helps.

MayankFawkes

comment created time in 13 days

delete branch nmccann/pyzbar

delete branch : newmaster

delete time in 13 days

push eventnmccann/pyzbar

Noah McCann

commit sha 5fb7505fe648161442f838de5fe71585eaeaa94b

Re-added parts that were missed during the previous merge

view details

push time in 13 days

create barnchnmccann/pyzbar

branch : newmaster

created branch time in 13 days

push eventnmccann/pyzbar

Noah McCann

commit sha dc2fcd0ba54bfcfff0eeea77080b1f225a6ca0e0

Included Jaan Tallinn's fix: 'Correctly handle cases where detected data contains null-bytes'

view details

push time in a month

fork nmccann/pyzbar

Read one-dimensional barcodes and QR codes from Python 2 and 3.

fork in a month

startedjameshurst/CombineWaiting

started time in 3 months

more