注意
转到结尾 下载完整的示例代码。
条形码#
此演示展示了如何生成条形码。
图形大小的计算方式是使像素宽度是数据点数量的倍数,以防止出现插值伪影。此外,Axes
定义为跨越整个图形,所有 Axis
都被关闭。
数据本身使用 imshow
进行渲染,使用
code.reshape(1, -1)
将数据转换为只有一行的二维数组。imshow(..., aspect='auto')
允许非正方形像素。imshow(..., interpolation='nearest')
防止边缘模糊。因为我们已经对图形像素宽度进行了微调,所以这种情况不应该发生,但为了安全起见,我们还是这样做了。
import matplotlib.pyplot as plt
import numpy as np
code = np.array([
1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1,
0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0,
1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1,
1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1])
pixel_per_bar = 4
dpi = 100
fig = plt.figure(figsize=(len(code) * pixel_per_bar / dpi, 2), dpi=dpi)
ax = fig.add_axes([0, 0, 1, 1]) # span the whole figure
ax.set_axis_off()
ax.imshow(code.reshape(1, -1), cmap='binary', aspect='auto',
interpolation='nearest')
plt.show()
参考资料
此示例展示了以下函数、方法、类和模块的使用方法