好玩图像PIL处理

一、PIL库学习总结

1、PIL中的模块

  Image模块、ImageChops模块、ImageCrackCode模块、ImageDraw模块、ImageEnhance模块、ImageFile模块、ImageFileIO模块、ImageFilter模块、ImageFont模块、ImageGrab模块、ImageOps模块、ImagePath模块、ImageSequence模块、ImageStat模块、ImageTk模块、ImageWin模块、PSDraw模块。最常用模块为Image模块、ImageFilter模块、ImageEnhance模块。

 

2、Image类的解释

         Image类的图像读取和创建方法   

 方法 描述
Image.open(filename)         根据参数加载图像文件      
Image.new(mode,size,color) 根据给定参数创建一个新的图像
Image.open(StringIO.StringIO(buffer)) 从字符串中获取图像
Image.frombytes(mode,size,data) 根据像素点data创建图像
Image.veify() 对图像文件完整性进行检查,返回异常

                                                                                                                                                                                                                          

 

 

 

 

       

           

           Image类的常用属性      

属性 描述
Image.format 标识图像格式或来源,如果图形不是从文件读取,值为None
Image.mode 图形的色彩模式,"L"为灰度图像,"RGB"为真彩色图像,"CMYK"为出版图像
Image.size 图像高度与宽度,单位是像素(px),返回值是二元元组(tuple)
Image.palette 调色板属性,返回一个ImagePalette类型

                                                                                                                                                                                                                                                                                                                           

   

 

 

 

          

          Image类的序列图像操作方法

方法 描述
Image.seek(frame) 跳转并返回图像中的指定帧
Image.tell() 返回当前帧的序号

 

 

     

 

 

 

         

          Image类的图像转换和保存方法

方法 描述
Image.save(filename,format) 将图像保存为filename文件名,format是图片格式
Image.convert(mode) 使用不同的参数,转换图像为新的模式
Image.thumbnail(size) 创建图像的缩略图,size是缩略图尺寸的二元元组

                                                                                                                                                               

 

 

 

 

         

         Image类的图像旋转与缩放方法

方法 描述
Image.resize(size) 按size大小调整图像,生成副本
Image.rotate(angle) 按angle角度旋转图像,生成副本

 

      

 

 

 

 

           Image类的图像像素和通道处理方法

方法 描述
Image.piont(func) 根据函数func的功能对每个元素进行运算,返回图像副本
Image.split() 提取RGB图像的每个图形通道,返回图像副本
Image.merge(mode,bands) 合并通道,其中mode表示色彩,bands表示新的色彩通道
Image.blend(im1,im2,alpha)

将两幅图片im1和im2按照如下公式插值后生成新的图像:

im1*(1.0-alpha)+im2*alpha

 

 

 

 

 

 

 

 

 

 

  引用方法: 

1 from PIL import Image
2 im=Image.open("D:\我的文件\Python\壁纸3.jpg")
3 im.thumbnail((158,158))
4 om.save("D:\我的文件\Python\壁纸5.jpg")

 

3、ImageFilter类的解释

                 

             ImageFilter类的预定义过滤方法

方法表示 描述
ImageFilter.BLUK 图像的模糊效果
ImageFilter.CONTOUR 图像的轮廓效果
ImageFilter.DETAIL 图像的细节效果
ImageFilter.EDGE_ENHANCE 图像的边界加强效果
ImageFilter.EDGE_ENHANCE_MORE 图像的阔值边界加强效果
ImageFilter.EMBOSS 图像的浮雕效果
ImageFilter.FIND_EDGES 图像的边界效果
ImageFilter.SMOOTH 图像的平滑效果
ImageFilter.SMOOTH_MORE 图像的阔值平滑效果
ImageFilter.SHARPEN 图像的锐化效果

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  引用方法:

1 from PIL import ImageFilter
2 im=Image.open("D:\我的文件\Python\壁纸5.jpg")
3 om=im.filter(ImageFilter.CONTOUR)
4 om.save("D:\我的文件\Python\壁纸2.jpg")
5 om=im.filter(ImageFilter.EMBOSS)
6 om.save("D:\我的文件\Python\壁纸1.jpg")

 

4、ImageEnance类的解释

 

     ImageEnhance类的图像增强和滤镜方法                                                                

             方法           描述
ImageEnhance.enhance(factor) 对选择的属性增强factor倍
ImageEnhance.Color(im) 调整图像的颜色平衡
ImageEnhance.Contrast(im) 调整图像的对比度
ImageEnhance.Brightness(im) 调整图像的亮度
ImageEnhance.Sharpness(im) 调整图像的锐度

 

 

 

 

 

 

 

 

 

  

  引用如下: 

1 from PIL import Image
2 from PIL import ImageEnhance
3 im=Image.open("D:\我的文件\Python\壁纸4.jpg")
4 om=ImageEnhance.Contrast(im)        #调整图像的对比度
5 om.enhance(20).save("D:\我的文件\Python\壁纸7.jpg")
6 om=ImageEnhance.Sharpness(im)       #调整图像的锐度
7 om.enhance(20).save("D:\我的文件\Python\壁纸6.jpg")

 

 

二、图像处理的实例

1、生成缩略图 

1 from PIL import Image
2 im=Image.open("D:\我的文件\Python\壁纸5.jpg")
3 im.thumbnail((58,58))

 

 显示如下:                 

        

  

1 from PIL import Image
2 im=Image.open("D:\我的文件\Python\壁纸3.jpg")
3 im.thumbnail((158,158))
4 om.save("D:\我的文件\Python\壁纸5.jpg")

 

 

显示如下:

            

 

 

2、图像处理

代码如下:

  

 1 from PIL import Image
 2 from PIL import ImageFilter
 3 im=Image.open("D:\我的文件\Python\壁纸5.jpg")
 4 im.thumbnail((158,158))
 5 om.save("D:\我的文件\Python\壁纸5.jpg")
 6 r,g,b=im.split()
 7 om=Image.merge("RGB",(b,g,r))
 8 om.save("D:\我的文件\Python\壁纸3.jpg")
 9 om=im.filter(ImageFilter.CONTOUR)
10 om.save("D:\我的文件\Python\壁纸2.jpg")
11 om=im.filter(ImageFilter.EMBOSS)
12 om.save("D:\我的文件\Python\壁纸1.jpg")

 

 

显示如下:

  

 

 3、提取图像每一帧

  

 1 from PIL import Image
 2 #from PIL import ImageFilter
 3 im=Image.open("D:\我的文件\Python\动图.gif")
 4 try:
 5     im.save('picframe{:02d}.png'.format(im.tell()))
 6     while True:
 7         im.seek(im.tell()+1)
 8         im.save('picframe{:02d}.png'.format(im.tell()))
 9 except:
10     print("处理结束")

 

 

 

       

 

 

4、美图秀秀  

1 from PIL import Image
2 from PIL import ImageEnhance
3 im=Image.open("D:\我的文件\Python\壁纸4.jpg")
4 om=ImageEnhance.Contrast(im)        #调整图像的对比度
5 om.enhance(20).save("D:\我的文件\Python\壁纸7.jpg")
6 om=ImageEnhance.Sharpness(im)       #调整图像的锐度
7 om.enhance(20).save("D:\我的文件\Python\壁纸6.jpg")
8 om=ImageEnhance.Brightness(im)      #调整图像的亮度
9 om.enhance(1).save("D:\我的文件\Python\壁纸8.jpg")

  

结果如下:

   

  

 

 

 5、好玩的gif图片

  

 1 from PIL import Image
 2 import os #第一步 获得所有图像文件列表,过滤不需要扩展名
 3 filelist = []  
 4 path = os.getcwd()
 5 files = os.listdir("D:\我的文件\Python")
 6 for f in files:  
 7     if(os.path.isfile(path + '/' + f)):
 8         if (os.path.splitext(f)[1] == ".BMP"):
 9             filelist.append(f)
10         if (os.path.splitext(f)[1] == ".JPG"):
11             filelist.append(f)
12         if (os.path.splitext(f)[1] == ".PNG"):
13             filelist.append(f)
14         if (os.path.splitext(f)[1] == ".TIF"):
15             filelist.append(f) #第二步 当判断文件不是GIF格式的时候转换为GIF格式
16 for infile in filelist:
17   outfile = os.path.splitext(infile)[0] + ".gif"
18   if infile != outfile:
19     try:
20       Image.open(infile).save(outfile)
21       print("Covert to GIF successfully!")
22     except IOError:
23       print("This format can not support!")
24       infile

  

 之后的成果我不知道怎么展示~~~~

所以就到这里啦

感觉自己好酷哦(哈哈哈哈哈哈哈哈哈哈)

      

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!