图像处理库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:最高质量
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,041评论 3 119
  • Image读出来的是PIL的类型,而skimage.io读出来的数据是numpy格式的 输出可以看出Img读图片的...
    jiandanjinxin阅读 97,480评论 2 52
  • 本文转自 python数字图像处理 基于python脚本语言开发的数字图片处理包,比如PIL,Pillow, op...
    jiandanjinxin阅读 148,165评论 8 89
  • 18.35分的天空。
    曹小阁阅读 1,241评论 0 0
  • 今天是我第一次来简书。 选择简书,也许是QQ熟识太多,微博戾气太重,知乎优越感太强。 我只是想要一个自己的地方,简...
    来去孤岛阅读 1,638评论 0 2