图像处理库PIL

这也是我第一个python小程序主要用来实现把图像转换成为一个,字符画,就类似下面这样

代码示例

首先需要用到的就是PIL库,这是Python中一个专门用来处理图像的库,首先我们想学习PIL并编写上面这个小程序就需要先导入PIL库,使用pip就可以方便的导入(关于pip的安装请自行查找方法,非常简单)

from PILimport Image

import argparse

'''

Image模块是PIL中最重要的模块,它提供了诸多图像操作的功能,比如创建、打开、显示、保存图像等功能,合成、裁剪、滤波等功能,获取图像属性功能,如图像直方图、通道数等。

'''

#直接输出至控制台

IMG ='test.png'

HEIGHT =25    #设置输出也是压缩后图片高度

WIDTH =78    #设置输出后也是压缩后图片的宽度

ascii_char =list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")    #用来绘制字符画所用到的字符



def get_char(r,g,b,alpha =256):

    if alpha ==0:

        return ' '

    length =len(ascii_char)

    gray =int(0.2126 * r +0.7152 * g +0.0722 * b)

    unit = (256.0 +1)/length

    return ascii_char[int(gray/unit)]



im = Image.open(IMG)

print(im.getbands())#图片所拥有的波段,比如 R G B A

print(im.mode)#图片颜色模式

im = im.resize((WIDTH,HEIGHT),Image.NEAREST)    #实现图片的缩放功能

txt =""

for iin range(HEIGHT):

    for jin range(WIDTH):

        txt += get_char(*im.getpixel((j,i)))

    txt +='\n'

print(txt)

这个小程序使用了缩放功能来固定图片大小,在pillow中图片的缩放有两种方式,1.使用resize函数,2,使用thumbnail函数

  • resize函数可以缩小,也可以放大

  • thumbnail只能缩小,不能放大

所以,如果你只打开一次图片,要存出多个尺寸的话,要么,从大到小开始缩放。要么,使用resize.建议从大到小开始缩放,因为,使用resize放大的话,你可以想象那个马赛克。当然,你也可以设置缩放图片的质量

  • PIL.Image.NEAREST:最低质量
  • PIL.Image.BILINEAR:双线性
  • PIL.Image.BICUBIC:三次样条插值
  • PIL.Image.ANTIALIAS:最高质量

你可能感兴趣的:(图像处理库PIL)