第一个有趣的python小程序

原创
2018/04/17 10:44
阅读数 3W

 嘿嘿嘿!!!

我是只可耐的测试妹子,喜欢玩也喜欢学习,之前同事们建议我开通GitHub来记录学习心得以及项目代码,我也觉得很有必要!!so

最近在学习python,写了一个有趣的关于图片处理的程序,虽然很简单拙劣但是还是满满的开心,希望以后能经常在github上面记录关于学习的有趣事情!

so分割线||我要开始po这个简单有趣的程序了,了解程序请往下看:

首先打开cmd:

cmd 中pip install  pillow 安装这个图形处理库

打开pycharm新建项目 ImageToStr.py

from PIL import Image #引入图形处理包Image类

image_name = 'IMG_20180414_112918.jpg'#获取图片这里图片放入这个项目文件夹中

img = Image.open(image_name)#使用对象读取图片

img = img.convert('L')#图片转换成灰度模式 img.size img.mode img.show()获取图片大小 模式

img.save('图片名称') #保存该转换成灰度模式的图片

w, h = img.size  #获取缩放比例的图片

    if w > 100:

        h = int((100 / w) * h / 2)

        w = 100

# 重置图片大小且为防止图片锯齿加一个滤镜

img=img.resize((w,h),Image.ANTIALIAS)

data=[]

# 替换字符的列表

chars=['',',','?','。','.','N','m']

# 根据图片的宽度和高度遍历像素点并取出每个像素点的颜色值

for i in range(0,h):

    line=''

    for j in range(0,w):

        # 获取像素点的值

         pi=img.getpixel((j,i))

        # 用字符串替换像素点的颜色

         for k in range(0,8):

             if pi<(k+1)*32:

                 line += chars[7-k]

                 break

    data.append(line)#把所有数据一次循环存入data中

f=open(image_name+'.txt','w')#以写的方式新建并打开一个文本

for d in data:

    print(d,file=f) 循环读取data数据并存入该文档

f.close()

img.show()

_____________________分割线!!!!!!!!!!

还可以对该零零散散的代码重构,把保存和获取字符写成函数然后调用整洁简单并且能重复利用,并且可以加入入口命令。

代码如下

from PIL import Image

def save(image_name,data):

   f=open(image_name+'.txt','w')#以写的方式新建并打开一个文本

   for d in data:

       print(d,file=f) 循环读取data数据并存入该文档

   f.close()

def get_chars(pi):

   chars=['',',','?','。','.','N','m']

   for k in range(0,8):

             if pi<(k+1)*32:

                 return chars[7-k]

if __name__=‘__main__’:

      image_name = 'IMG_20180414_112918.jpg'#获取图片这里图片放入这个项目文件夹中

      img = Image.open(image_name)#使用对象读取图片

      img = img.convert('L')#图片转换成灰度模式 img.size img.mode img.show()获取图片大小 模式

      img.save('图片名称') #保存该转换成灰度模式的图片

      w, h = img.size  #获取缩放比例的图片

          if w > 100:

             h = int((100 / w) * h / 2)

             w = 100

# 重置图片大小且为防止图片锯齿加一个滤镜

      img=img.resize((w,h),Image.ANTIALIAS)

      data=[]

      # 替换字符的列表

# 根据图片的宽度和高度遍历像素点并取出每个像素点的颜色值

   for i in range(0,h):

       line=''

       for j in range(0,w):

           # 获取像素点的值

           pi=img.getpixel((j,i))

        # 用字符串替换像素点的颜色

           for k in range(0,8):

               if pi<(k+1)*32:

                    line +=get_chars(pi)

                    break

       data.append(line)#把所有数据一次循环存入data中   

       save(image_name,data)  

酱紫就可以了,哇咔咔!!! 

下面看看我处理过的图片效果吧:        

 

 

是不是很有趣啊,快动手试试吧!!!

 

展开阅读全文
打赏
2
4 收藏
分享
加载中
记得之前看过一个图片转Excel和HTML的字符画的,很好看的
01/17 19:44
回复
举报
python的opencv了解一下😤
2018/06/11 17:20
回复
举报
QAQ123345博主

引用来自“冰峰雪座”的评论

大佬教我学python

我是渣渣啊
2018/06/08 18:06
回复
举报
大佬教我学python
2018/06/08 17:45
回复
举报
QAQ123345博主
不好意思,很久没上了,现在才看到,我这个代码试过了,下面图片都是我执行的效果,出来图片可能是很大
2018/06/04 15:11
回复
举报
代码好像有点小问题,1、主程序里面line未定义。2、chars 列表里面元素好像只有7个元素,当return chars[7 - 0] 时报错。目测应该是8个元素,少了个‘1’ 。3、我按照你这个代码写完了图片确实是保存成灰度的了,但是生成的txt文件很大,基本上大于500kb,打开看不出来效果(⊙_⊙)? 估计是代码哪儿写错了,能发给我一下吗。
2018/04/29 21:54
回复
举报
更多评论
打赏
6 评论
4 收藏
2
分享
返回顶部
顶部