如何将文字转换为二维码 python_用python将二维码转换成字符直接输出控制台
上周,收到了几个有趣的问题邀请,其中一个就是要把二维码直接打印到控制台。
原问题链接:https://www.zhihu.com/question/49258470/answer/115082640
众所周知,WINDOWS的控制台只能输出字符,所以问题实际上就转变为把二维码转成字符。
还记得网上各种大神都写过的字符画代码么?其实就是类似的思路。
from PIL import Image加载这个模块就够用了。
实际写的过程,我们发现,每张二维码图片的大小不同,它每个方格的实际像素大小也不同,所以我们需要先计算每个方格的大小,然后每间隔那么大小的位置,取一个像素来计算就可以了。
研究二维码图片,发现左上角的正方形图形里面,再左上角切出来正好就是整幅图有效方块的大小,那么只需要计算这个方块大小即可:
#计算每个方块的大小像素
def get_cell_size(x,y,x2,y2):
for j in range(x,x2):
for i in range(y,y2):
pix = im.getpixel((j,i))
if pix[:3]==(255,255,255):
return j - x #每个黑色格子的像素点大小
def get_cell():
flag = 0
for y in range(HEIGHT):
for x in range(WIDTH):
pix = im.getpixel((x,y))
if pix[:3]==(0,0,0) and flag==0: #出现第一个黑色像素
x1=x
flag = 1
if pix[:3]==(255,255,255) and flag ==1 : #出现第一个白色像素(意味着左上角的标记方块横向结束)
flag = 2
cell = get_cell_size(x1,x1,x,x)
return cell
计算完方块大小,就可以每隔这个方块大小,取一个像素点来判断是黑色还是白色:
def get_qrcode(cell):
height = int(HEIGHT/cell)
width = int(WIDTH/cell)
code=''
for y in range(height):
for x in range(width):
pix = im.getpixel((x*cell,y*cell))
if pix[:3]==(0,0,0):
code += '▇'
if pix[:3]==(255,255,255):
code += ' '
code += '\n'
print(code)
输出后发现:每行的间隔有点大,造成无法扫描二维码,调整一下控制台字体:
然后把输出的内容选中反色,就可以扫描了,当然,也可以直接修改布局颜色为白底黑字:
(某快餐是否要给点广告费啊,上图二维码是随便网上搜索出来的,并不是广告。)
完整代码如下,抛砖引玉,看看还有没有别的更好的方法来计算:
from PIL import Image
#计算每个方块的大小像素
def get_cell_size(x,y,x2,y2):
for j in range(x,x2):
for i in range(y,y2):
pix = im.getpixel((j,i))
if pix[:3]==(255,255,255):
return j - x #每个黑色格子的像素点大小
def get_cell():
flag = 0
for y in range(HEIGHT):
for x in range(WIDTH):
pix = im.getpixel((x,y))
if pix[:3]==(0,0,0) and flag==0: #出现第一个黑色像素
x1=x
flag = 1
if pix[:3]==(255,255,255) and flag ==1 : #出现第一个白色像素(意味着左上角的标记方块横向结束)
flag = 2
cell = get_cell_size(x1,x1,x,x)
return cell
def get_qrcode(cell):
height = int(HEIGHT/cell)
width = int(WIDTH/cell)
code=''
for y in range(height):
for x in range(width):
pix = im.getpixel((x*cell,y*cell))
if pix[:3]==(0,0,0):
code += '▇'
if pix[:3]==(255,255,255):
code += ' '
code += '\n'
print(code)
input('...')
if __name__ == '__main__':
IMG = '123.png'
im = Image.open(IMG)
WIDTH = im.width
HEIGHT = im.height
get_qrcode(get_cell())
如何将文字转换为二维码 python_用python将二维码转换成字符直接输出控制台相关推荐
- c语言将一幅画转换为字符画,C#将图片转换成字符画
先看一下效果图 在Main方法中调用(首先要添加程序集System.Drawing,然后引入命名空间System.Drawing) ConvertToChar(new Bitmap(@"D: ...
- Python----凯撒密码、将字符转换成ASCLL函数、将ASCLL码转换成字符函数
ord(查询的字符): 查询字符的ASCLL码 chr(需要转换的ascll码): 将ASCLL相应数值的数转换成字符 xxyw=input() xxmw='' fo ...
- 计算机系统的图形图像编码方式,只有将数字、文字、图像、声音和视频等不同类型的信息转换成_______代码,才便于计算机加工和处理。...
只有将数字.文字.图像.声音和视频等不同类型的信息转换成_______代码,才便于计算机加工和处理.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容, ...
- 暴风转码转超清文件_qlv文件怎么转换成mp4?三个办法会一个就不愁视频转换啦...
在我们日常娱乐和日常工作中,有时间会观看并下载一些视频.腾讯视频QLV格式,只能用腾讯独有的腾讯视频软件才能播放.那我们有什么办法可以将这QLV格式转换成我们通常用的视频格式呢,如MP4格式呢.那怎么 ...
- python画二维图_使用python绘制二维图形示例
我就废话不多说了,直接上代码吧! import matplotlib.pyplot as plt #也可以使用 import pylab as pl import matplotlib.font_ma ...
- python绘制二维图形_使用python绘制二维图形示例
我就废话不多说了,直接上代码吧! import matplotlib.pyplot as plt #也可以使用 import pylab as pl import matplotlib.font_ma ...
- asic码转16进制c语言,十六进制数转换成ascii码
本文收集整理关于十六进制数转换成ascii码的相关议题,使用内容导航快速到达. 内容导航: Q1:一个十六进制数转换成ASCII码的单片机程序 HASC:MOVA,R0:从R0中取一个16进制(二进制 ...
- c语言将字母转换成ascii码,c语言函数toascii()怎么把整数转换成合法的ASCII码字符...
c语言函数toascii()怎么把整数转换成合法的ASCII码字符?函数需要引入的头文件:#include 定义toascii()函数:int toascii(int c); toascii()函数使 ...
- python制作二维码_利用Python制作二维码
利用简单的Python代码制作二维码 友情链接:饿了么外卖大红包限时领取 一.制作工具 安装Python环境 + PyCharm编译器. 二.电脑系统 本人win10 + Python3.7.0 + ...
- 用python制作二维码_使用python制作二维码
python-qrcode是个用来生成二维码图片的第三方模块,主要依赖的是 PIL 模块和 qrcode 库.(PIL模块只支持python2.7及以下版本,python3之后无法使用,官方推荐pyt ...
最新文章
- 微信和支付宝支付模式详解及实现(.Net标准库)- OSS开源系列
- vba 窗体所有组件 enabled_Csharp设计闪烁窗体制作教程
- 这些知识点你会吗?redis的分布式布隆过滤器含答案解析
- Java RMI(1):HelloWorld篇
- Spring Cloud微服务实战:外卖订餐系统
- linux php运行用户名和密码,Linux实例(一)使用用户名密码验证连接Linux
- .netCHARTING图表控件详细介绍及下载
- python kafka获取最新的offset
- Python--详解Python中re.sub
- AI 假冒老板骗取 173 万!
- OpenStack点滴01-概览
- mysql分布式数据库_分布式数据库搭建详细教程
- 对抗生成网络(Generative Adversarial Network, GAN)
- 视频人像磨皮插件:Beauty Box 4.2
- elastic serach学习
- Java实现合成图片
- 30 行代码实现,支付宝蚂蚁森林自动收能量!
- Keil 中“last line of file ends without a newline”的解决
- 2021中国大学生程序设计竞赛(CCPC)- 网络选拔赛(重赛) Jumping Monkey(并查集,逆向考虑)
- Windows常见扩展名介绍