鱼C论坛

 找回密码
 立即注册
查看: 2762|回复: 1

[已解决]PYTHON能解析DataMatrix码型的二维码吗?

[复制链接]
发表于 2021-3-16 20:17:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我做一个二维码解析器,但是目前做出来的只能解析QRcode,DataMatrix的解析不了呢,求助~
最佳答案
2021-3-17 17:06:19
本帖最后由 YunGuo 于 2021-3-17 17:12 编辑

pylibdmtx库可以生成/解析DataMatrix二维码,生成的二维码图片背景是白色有边缘(有些网站生成二维码是透明背景没有边缘,比如草料)
from PIL import Image
from pylibdmtx import pylibdmtx

# 生成data matrix二维码
en = pylibdmtx.encode('http://www.baidu.com/'.encode('utf-8'))
img = Image.frombytes('RGB', (en.width, en.height), en.pixels)
img.save('444.png')



pylibdmtx库生成的二维码可以直接解析出来,其它网站生成的二维码必须要有边缘(边框,或者二维码在一张图片中),不能是没有边框的纯二维码,不然会解析不出来;
from PIL import Image
from pylibdmtx import pylibdmtx

# 加载图片
image = Image.open('444.png')
# 解析data matrix二维码
de = pylibdmtx.decode(image)
result = (de[0].data).decode('utf-8')
print(result)

如果只是纯二维码,没有边缘(边框),要想解析,目前想到的办法是先给图片添加一个边框(任何颜色都行)再去解析。
from PIL import Image
from pylibdmtx import pylibdmtx

image = Image.open('1-666.png')
# 获取图片宽高
width, height = image.size
# 添加边框
width += 2 * 10
height += 2 * 10
new_img = Image.new('RGB', (width, height), (255, 255, 255))
new_img.paste(image, (10, 10))
# 解析二维码
de = pylibdmtx.decode(new_img)
result = (de[0].data).decode('utf-8')
print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-17 17:06:19 | 显示全部楼层    本楼为最佳答案   
本帖最后由 YunGuo 于 2021-3-17 17:12 编辑

pylibdmtx库可以生成/解析DataMatrix二维码,生成的二维码图片背景是白色有边缘(有些网站生成二维码是透明背景没有边缘,比如草料)
from PIL import Image
from pylibdmtx import pylibdmtx

# 生成data matrix二维码
en = pylibdmtx.encode('http://www.baidu.com/'.encode('utf-8'))
img = Image.frombytes('RGB', (en.width, en.height), en.pixels)
img.save('444.png')



pylibdmtx库生成的二维码可以直接解析出来,其它网站生成的二维码必须要有边缘(边框,或者二维码在一张图片中),不能是没有边框的纯二维码,不然会解析不出来;
from PIL import Image
from pylibdmtx import pylibdmtx

# 加载图片
image = Image.open('444.png')
# 解析data matrix二维码
de = pylibdmtx.decode(image)
result = (de[0].data).decode('utf-8')
print(result)

如果只是纯二维码,没有边缘(边框),要想解析,目前想到的办法是先给图片添加一个边框(任何颜色都行)再去解析。
from PIL import Image
from pylibdmtx import pylibdmtx

image = Image.open('1-666.png')
# 获取图片宽高
width, height = image.size
# 添加边框
width += 2 * 10
height += 2 * 10
new_img = Image.new('RGB', (width, height), (255, 255, 255))
new_img.paste(image, (10, 10))
# 解析二维码
de = pylibdmtx.decode(new_img)
result = (de[0].data).decode('utf-8')
print(result)

草料生成的(原图是透明背景,论坛好像没法传透明图,我转成了白色背景):

草料生成的(原图是透明背景,论坛好像没法传透明图,我转成了白色背景):

pylibdmtx生成的

pylibdmtx生成的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 07:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表