You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将qrcode库生成的黑白二维码转换为0和1组成的字符串?

如何从qrcode生成的二维码导出0/1字符串(黑=1,白=0)

有两种高效的实现方式,优先推荐直接操作二维码的原始模块数据,避免图片处理的额外步骤:

方法1:直接使用QRCode对象的modules属性(推荐)

qrcode库生成二维码后,QRCode实例的modules属性存储了原始的二维码模块矩阵——每个元素为True(对应黑色像素)或False(对应白色像素),直接遍历这个矩阵转换即可:

import qrcode
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
data = "hello world!"
qr.add_data(data)
qr.make(fit=True)

# 遍历二维码模块矩阵,转换为0/1字符串
binary_str = ""
for row in qr.modules:
    # 将每行的True转"1",False转"0",拼接成单行字符串
    line = "".join("1" if pixel else "0" for pixel in row)
    binary_str += line + "\n"

# 输出结果或保存到文件
print(binary_str)
with open("qrcode_binary.txt", "w") as f:
    f.write(binary_str)

# 保留原有的图片生成代码
img = qr.make_image(back_color=(255, 255, 255), fill_color=(0, 0, 0))
img.save("test.png")

方法2:通过生成的Image对象处理像素

如果需要基于已生成的图片文件/Image对象处理,可以通过读取像素值判断颜色,注意要跳过边框和放大倍数的影响:

import qrcode
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
data = "hello world!"
qr.add_data(data)
qr.make(fit=True)

img = qr.make_image(back_color=(255, 255, 255), fill_color=(0, 0, 0))
width, height = img.size
box_size = qr.box_size
border = qr.border
module_count = qr.modules_count

binary_str = ""
# 遍历每个二维码模块(跳过边框区域)
for y in range(border, border + module_count):
    line = ""
    for x in range(border, border + module_count):
        # 取每个模块左上角的像素判断颜色(因为box_size是放大倍数,模块内像素一致)
        pixel_x = x * box_size
        pixel_y = y * box_size
        pixel_color = img.getpixel((pixel_x, pixel_y))
        line += "1" if pixel_color == (0, 0, 0) else "0"
    binary_str += line + "\n"

print(binary_str)
img.save("test.png")

说明

  • 方法1无需处理图片像素,直接使用库生成的原始矩阵数据,效率更高且结果准确;
  • 方法2适用于已存在的二维码图片文件,需要注意box_size(模块放大倍数)和border(边框模块数)的参数,确保只读取有效二维码区域的像素。

内容的提问来源于stack exchange,提问作者Bo_O

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:17:53