玩转PIL >>> 玩转photo

时间:2024-04-30 11:36:32

前:1.使用图片放在文件最后,需要的请自行下载

  2.运行环境win10家庭版,已经安装好pillow库

一.学习总结

  PIL库支持图像的储存,显示和处理,几乎能处理所有的图片格式,可以完成对图像的缩放,剪辑,叠加等等操作

大致分类:Image,ImageFilter, ImageEnhance

二.生成缩略图,改变颜色,获取轮廓,浮雕等操作

  1.生成缩略图  使用函数 Image.thumbnail(size)

    代码如下:

from PIL import Image
im = Image.open("鸟巢.jpg")
im.thumbnail((128,128))
im.save("鸟巢缩略图.jpg")

  2.改变颜色  使用函数  Image.split() 提取RGB图像的每个颜色通道,返回图像副本 以及  Image.merge(mode,bands) 合并通道,其中mode表示色彩,bands表示新的色彩通道

    代码如下:

from PIL import Image
im = Image.open("鸟巢.jpg")
r,g,b = im.split()
om = Image.merge("RGB",(b,g,r))
om.save("鸟巢改变颜色.jpg")

    效果:

玩转PIL >>> 玩转photo

  3.改变轮廓  使用函数  ImageFilter.CONTOUR  使用方式:Image.filter(ImageFilter.fuction)

    代码如下:

from PIL import Image
from PIL import ImageFilter
im = Image.open("鸟巢.jpg")
om = im.filter(ImageFilter.CONTOUR)
om.save("鸟巢浮雕.jpg")

    效果:

玩转PIL >>> 玩转photo

  4.浮雕  使用函数 ImageFilter.EMBOSS

    代码如下:

from PIL import Image
from PIL import ImageFilter
im = Image.open("鸟巢.jpg")
om = im.filter(ImageFilter.EMBOSS)
om.save("鸟巢浮雕.jpg")

  效果:

玩转PIL >>> 玩转photo

  4.提取GIF每一帧  使用函数  Image.seek(frame) 跳转并返回图像中的指定帧 以及  Image.tell() 返回当前帧的序号

    代码如下:

from PIL import Image
im = Image.open('1.gif')
try:
im.save('picframe{:02d}.png'.format(im.tell()))
while True:
im.seek(im.tell()+1)
im.save('picframe{:02d}.png'.format(im.tell()))
except:
print("处理结束")

   效果(图片太多,在此不一一展示)

三.增强图片的锐度,美白,磨皮

  1.锐度  使用函数ImageEnhance.Sharpness(im)

    代码如下:

from PIL import Image
from PIL import ImageEnhance
im = Image.open('鸟巢.jpg')
om = ImageEnhance.Sharpness(im)
om.enhance(20).save('鸟巢锐度.jpg')

    效果如下

玩转PIL >>> 玩转photo

  2.美白  使用函数

  3.磨皮  使用函数

  4.中文字符画  使用函数

四.几张图片生成一个gif图  使用函数

  代码:

import imageio

def create_gif(image_list, gif_name):

    frames = []
for image_name in image_list:
frames.append(imageio.imread(image_name))
# Save them as frames into a gif
imageio.mimsave(gif_name, frames, 'GIF', duration = 0.1) return def main():
image_list = ['001.jpg','002.jpg','003.jpg','004.jpg','005.jpg']
gif_name = 'created000_gif.gif'
create_gif(image_list, gif_name) if __name__ == "__main__":
main()

    效果:

玩转PIL >>> 玩转photo