栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

12,pyhton图像处理类库PIL(Pillow)模块

Python 更新时间:发布时间: 百科书网 趣学号
1,python图像处理类库PIL(python imaging library)在python3.0中又叫Pillow模块,可以对图像进行缩放,裁剪,旋转,颜色转换等操作。


1,提取一张图片的像素建立新图片: ImageTk.PhotoImage(image)获取image的像素
import tkinter
from PIL import Image, ImageTk #最重要的两个模块

win = tkinter.Tk()
win.title('提取像素建立图像')
win.geometry('400x400')

can = tkinter.Canvas(win,bg='white',width=300,height=300)#创建画布组件
image = Image.open("dukou.jpg")       # 打开图像文件
#image.thumbnail((128,128)) #调整大小缩放
#image.save("sss5.jpg","PNG")#'JPEG' 不行的话就写PNG或者GIF格式也可以默认存到你pyhton项目文件夹下了
img = ImageTk.PhotoImage(image)       # 获取图像像素
can.create_image(160,120,image=img)   # 将图像像素添加到画布中
can.pack()                            # 将画布组件添加到主窗口

win.mainloop()


运行效果:

2,稍微复杂一点的:缩放是thumbnail()函数,保存就是直接 .save(文件名,类型)
import tkinter
from tkinter import Label
from PIL import Image, ImageTk
import glob, os#找系统文件路径时用得到
win = tkinter.Tk()
win.title('建立图像缩略图')
win.geometry('200x200')  # 定义窗体的大小400x200像素

#显然这个函数的主要功能就是缩放然后存储,缩放上面提了一下是thumbnail函数,保存就是直接
# .save(文件名,类型)
def imgshow():
    size = (64,64)       # 设置缩略图尺寸的元组参数
    for infile in glob.glob("dukou.jpg"):
        file, ext = os.path.splitext(infile)#file:dukou , ext:jpg
        im = Image.open("dukou.jpg")
        im.thumbnail(size)
        im.save(file + "(1).jpg", "PNG")   # 保存缩略图为dukou(1).jpg 为啥要写PNG类型,因为我的PILLOW库好像有问题!
    photo = ImageTk.PhotoImage(file='dukou(1).jpg')## 获取图像像素
    label = Label(win,image=photo)#加到lable标签里
    label.image = photo
    label.pack()
tkinter.Button(win, text='建立图像缩略图', command=imgshow).pack()
win.mainloop()

运行效果:

3,增强图像处理方法:属性:ImageFilter.EDGE_ENHANCE
import tkinter
from tkinter import Label
from PIL import Image,ImageTk,ImageEnhance,ImageFilter

win=tkinter.Tk()
win.title('增强图像')
win.geometry('1050x500')
photo=Image.open('oldfend.jpg')
photo = photo.resize((500,400))#取出图片并设置好缩放效果为(xx,xx)
img1=ImageTk.PhotoImage(photo)#取出它的像素
lable_1=Label(win,image=img1)#把原图放到lable1上

def imgshow():
    img=photo.filter(ImageFilter.EDGE_ENHANCE)#增强对比度属性ImageFilter.EDGE_ENHANCE
    img2=ImageTk.PhotoImage(img)#把增强后的img的像素取出来
    lable_2=Label(win,image=img2).grid(row=1,column=1)#放到lable2标签上并按网格式布局
    lable_2.image=img2#放到lable2上
button=tkinter.Button(win,text='增强图像处理',command=imgshow)#bun点击事件触发上面函数
button.grid(row=0,column=0,columnspan=2)
lable_1.grid(row=1,column=0)
win.mainloop()

运行效果:

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/293797.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号