Search code examples
pythoncolorsbinaryconverters

Is there a way to turn binary into a QR code programmatically?


I have the following:

1 1 1 1 1 1 1   1   1   1 1   1     1 1 1 1 1 1 1 
1           1     1 1 1 1 1     1   1           1
1   1 1 1   1   1 1 1         1     1   1 1 1   1 
1   1 1 1   1   1 1 1   1   1 1     1   1 1 1   1 
1   1 1 1   1   1     1 1   1 1 1   1   1 1 1   1 
1           1       1 1   1     1   1           1 
1 1 1 1 1 1 1   1   1   1   1   1   1 1 1 1 1 1 1 
                    1   1     1 1                 
1 1 1 1     1   1   1 1 1 1   1 1 1     1 1 1   1 
    1         1     1   1 1 1   1     1   1       
1 1   1 1 1 1     1 1 1 1 1     1         1       
    1 1 1     1   1 1           1 1       1 1 1   
    1 1 1 1 1 1   1 1   1   1     1 1 1 1   1 1   
      1   1   1 1 1   1 1   1 1 1   1 1 1   1 1 1 
  1   1     1 1 1     1   1           1       1   
1   1 1 1 1     1   1 1     1         1       1 1 
    1   1 1 1 1 1   1   1   1   1 1 1 1 1   1 1   
                1   1       1 1 1       1 1 1   1 
1 1 1 1 1 1 1     1 1     1 1   1   1   1     1 1 
1           1     1   1   1 1 1 1       1         
1   1 1 1   1     1       1 1   1 1 1 1 1         
1   1 1 1   1   1 1 1             1 1   1 1   1 1 
1   1 1 1   1   1 1         1   1   1 1 1     1   
1           1   1     1 1 1 1     1       1 1     
1 1 1 1 1 1 1   1   1 1             1     1 1 1 1 

and it won't scan on a QR code reader. Is there any way I can change this into an actual QR code so that it is scannable?


Solution

  • Since it appears you already know which squares to make black and which not, you could just use pillow to generate an image. You'll need to use ImageDraw and Image. What you need to do is something like:

    from PIL import Image, ImageDraw
    im = Image.new('1', (width, height), color=1) # Background white
    draw = ImageDraw.Draw(im)
    draw.point((x, y), 0) # Draw black