python PIL库的相关操作

1.PIL库概述:PIL库可以完成图像归档和图像处理两方面的功能需求。(1)图像归档:对图像进行批处理、生成图像预览、图像格式转换等;(2)图像处理:图像基本处理、像素处理、颜色处理等。

关于PIL库Image类解析说明()

要加载一个图像文件,im=Image.open('图像保存位置')  ,想将图像保存下来im.save('想将保存图像的位置')

下面将用一些例子来说明:

#im.thumbnail=((128,128))对im生成缩略图,其中(128,128)是缩略图的尺寸。

from PIL import Image#引用PIL库
im=Image.open('C:/Users/86183/Desktop/微信图片_20200414133515.jpg')#打开图像
im.thumbnail((128,128))#对图像进行缩略图处理,二元组(128,128)是生成图像的大小
im.save('C:/Users/86183/Desktop/suolvutu1.jpg')#保存

<原图  <缩略图

 改变颜色实例

from PIL import Image
im=Image.open('C:/Users/86183/Desktop/微信图片_20200414134749.jpg')
r,g,b=im.split()# 获取RGB通道
newg=g.point(lambda i:i*0.9)#将G通道颜色值变为原来的0.9倍
newb=b.point(lambda i:i<100)#选择B通道值低于100的像素点
om=Image.merge(im.mode,(r,newg,newb))#将3个通道合成新的图像
om.save('C:/Users/86183/Desktop/颜色改变.jpg')#输出图像

<原图:<改变颜色后

图像的过滤于增强:利用Image类的filter()方法可以使用ImageFilter类,如下:Image.filter(ImageFliter.fuction)

获取图像的轮廓。原图同上

from PIL import Image
from PIL import ImageFilter
im=Image.open('C:/Users/86183/Desktop/微信图片_20200414134749.jpg')
om=im.filter(ImageFilter.CONTOUR)
om.save('C:/Users/86183/Desktop/获取轮廓.jpg')

 <轮廓图

图像的过滤和增强:

 采用ImageFilter.EMBOSS可以使图像产生浮雕类效果,具体操作如下:

from PIL import Image
from PIL import ImageFilter
im=Image.open('C:/Users/86183/Desktop/微信图片_20200414134749.jpg')
om=im.filter(ImageFilter.EMBOSS)
om.save('C:/Users/86183/Desktop/浮雕图.jpg')

 <浮雕

图像字符画绘制:

位图图片是由不同颜色像素点组成的规则分布,如果才用字符串代替像素,图像就成为了字符画。

from PIL import Image
ascii_char  = list('"$%_&WM#*oahkbdpqwmZO0QLCJUYXzcvunxr\
jft/\|()1{}[]?-/+@<>i!;:,\^`.')
def get_char(r, b, g, alpha=256):
    if alpha == 0:
        return ' '
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)   
    unit = 256 / len(ascii_char)
    return ascii_char[int(gray//unit)]
def main():
    im = Image.open('file:///C:/Users/86183/Desktop/微信图片_20200414182738.png')
    WIDTH, HEIGHT = 100,100
    im = im.resize((WIDTH, HEIGHT))
    txt = ""
    for i in range(HEIGHT):
        for j in range(WIDTH):
            txt += get_char(*im.getpixel((j, i))) 
    fo = open("zifuhua.txt","w")
    fo.write(txt)
    fo.close()
main()

  <原图<字符图

除了以上的例子外,PIL还可以实现制作GIF图片和GIF图片的提取。

from PIL import Image
im = Image.open('C:/Users/86183/Desktop/2016120211583958491.gif')
try:
    im.save('C:/Users/86183/Desktop/tiquzhenshu{:03d}.png'.format(im.tell()))
    while True:
        im.seek(im.tell()+1)
        im.save('C:/Users/86183/Desktop/tiquzhenshu{:02d}.png'.format(im.tell()))
    except:
        print('操作完成')
        

  

<原GIF图                        

猜你喜欢

转载自www.cnblogs.com/kwjl/p/12698677.html