调整图片大小
if len(nwh) == 1:
#如果项数为1,表示用户只输入了一个数字。即按比例缩放为较长边为此长度的矩形
ww = int(nwh[0] / max(w,h) * w) #max函数获取较大值
hh = int(nwh[0] / max(w,h) * h)
image = image.resize((ww,hh),Image.ANTIALIAS)
#改变图片大小
#第一个参数放入一个元组,指定宽高
#第二个参数 Image.ANTIALIAS 表示获取高质量图片
else:
#项数不为1,缩放为指定宽高的矩形
image = image.resize((nwh[0],nwh[1]),Image.ANTIALIAS)
2.5 转换字符
指定转换的字符集
asciis = list('M%$@#&WNBRwm8S5A4E3KXFPH69nsxeazgpqbdoctfhkyvuGZYVTUCI2QOD0L7Jjl1ri!^{}/|;:*<>_~-,. ')
#list函数将字符串转换为列表
定义转换字符的函数
def getasc(r,g,b,t=100): #t为透明度
if t == 0:
return(’ ') #如果是透明的,则直接返回空值
else:
asc = ‘’
gray = int(0.2126r+0.7152g+0.0722*b) #转灰度值
asc = asciis[int(len(asciis)/256*(gray))] #获取字符
return(asc)
开始转换字符
for i in range(h):
for o in range(w): #按行读取每一个像素的RGB值
p = image.getpixel((o,i))
g = getasc(*p) # * 将参数列表转换为多个项
txt = txt + g + distance #连接字符
txt = txt + ‘\n’ #换行
函数 getpixel
获取指定位置的 RGB
值,它的第一个参数为元组,传入像素位置 (x,y)
,如果图片是 JPG
格式的,它会返回含三项的列表 [r,g,b]
,如果图片是 PNG
格式的,它会返回含四项的列表 [r,g,b,t]
,t
是透明度
2.6 保存文本
使用 python
内置函数 open
保存文件
with open(outputfile,‘w’) as f: # ‘w’ 表示写入
f.write(txt)
2.7 效果
================== RESTART: D:\Python38-32\Files\ji2a\ji2a.py ==================
=image to ascii=
inputfile:
dora.png
outputfile:
dora.txt
distance?(Y/n):
y
resize?(needn’t:‘’, square:side length, restangle:width,height):
100
Opening ‘dora.png’…
Getting…
Saving…
Seccessfully
原图:
结果:
from PIL import Image as Image
asciis = list('M%$@#&WNBRwm8S5A4E3KXFPH69nsxeazgpqbdoctfhkyvuGZYVTUCI2QOD0L7Jjl1ri!^{}/|;:*<>_~-,. ')
#gray = int(0.2126r+0.7152g+0.0722*b)
def main():
global asciis
print(‘=image to ascii=’)
inputfile, outputfile, distance, re = getargs()
image = openfile(inputfile)
image = resize(image,re)
w, h = image.size
txt = gettxt(image,w,h,distance)
savefile(outputfile,txt)
print(‘Seccessfully’)
def getargs():
inputfile = input(‘inputfile:\n’)
outputfile = input(‘outputfile:\n’)
distance = {‘’:’ ‘,‘y’:’ ‘,‘n’:’'}
distance = distance[input(‘distance?(Y/n):\n’)]
re = input(“resize?(needn’t:‘’, square:side length, restangle:width,height):\n”)
return(inputfile,outputfile,distance,re)
def openfile(inputfile):
print(“\nOpening '”+inputfile+“'…”)
image = Image.open(inputfile)
return(image)
def resize(image,re):
if re != ‘’:
print(‘Resizing…’)
nwh = re.split(‘,’)
for i in range(len(nwh)):nwh[i]=int(nwh[i])
w, h = image.size
if len(nwh) == 1:
ww = int(nwh[0] / max(w,h) * w)
hh = int(nwh[0] / max(w,h) * h)
image = image.resize((ww,hh),Image.ANTIALIAS)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
文末有福利领取哦~
👉一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-2jC9gJlY-1712763251980)]