01二进制转码

转一维码

1
2
3
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
from PIL import Image, ImageDraw

def binary_to_barcode(binary_string, bar_width=4, bar_height=100):
"""
将01字符串转成一维条形码图像。

:param binary_string: 只包含0和1的字符串
:param bar_width: 每一条的宽度(像素)
:param bar_height: 高度(像素)
:return: Image 对象
"""
img_width = len(binary_string) * bar_width
img = Image.new("1", (img_width, bar_height), 1) # 1表示白色背景
draw = ImageDraw.Draw(img)

for i, bit in enumerate(binary_string):
x = i * bar_width
if bit == '1':
draw.rectangle([x, 0, x + bar_width - 1, bar_height], fill=0) # 黑条

return img

# 示例:你的296位字符串
binary_string = "01111011011110110111101101111011011110111100100101011001100100010101100101110011000001011101100110001001111100110011100101011001001100010000010100110011111010011101000100000101001100111001000101101001101100011011000101111001000001010011001110010001011110011110100100000101010101011111001101100001"

# 生成并显示图像
barcode_img = binary_to_barcode(binary_string)
barcode_img.show()

# 可选:保存图像
# barcode_img.save("output_barcode.png")

转二维码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from PIL import Image
MAX = 17
#二维码大小
pic = Image.new("RGB",(MAX, MAX))
str = "01111011011110110111101101111011011110111100100101011001100100010101100101110011000001011101100110001001111100110011100101011001001100010000010100110011111010011101000100000101001100111001000101101001101100011011000101111001000001010011001110010001011110011110100100000101010101011111001101100001"
# str为获取的01片段
i=0
for y in range (0,MAX):
for x in range (0,MAX):
if(str[i] == '1'):
pic.putpixel([x,y],(0, 0, 0))
else:
pic.putpixel([x,y],(255,255,255))
i = i+1
pic.show()
# pic.save("1.png")
#由于直接预览分辨率太低,所以保存下来观看

更新: 2025-08-06 13:38:00
原文: https://www.yuque.com/chaye-apqbl/vsc85q/gmgn532b93ng76ty


http://example.com/2026/01/19/MISC/照片/01二进制转码/
Author
chaye
Posted on
January 19, 2026
Licensed under