PIL库概述
PIL库是Python的优异第三方库,它需要通过pip安装:
pip install pillow
PIL库支持图像存储、显示和处置,它能够处置险些所有图片格式,可以完成对图像的缩放、剪裁、叠加以及向图像添加线条、图像和文字等操作。
PIL库Image类剖析
在PIL中,任何一个图像文件都可以用Image工具示意Image类的图像读取和建立方式:
Image.open(filename) #凭据参数加载图像文件
Image.new(mode, size, color) #凭据给定参数建立一个新的图像
Image.open(StringIO.StringIO(buffer)) #从字符串中获取图像
Image.frombytes(mode, size, data) #凭据像素点data建立图像
Image.verify() #对图像文件完整性举行检查,返回异常
Image类有4个处置图片的常用属性 :
Image.format #标识图像格式或泉源,若是图像不是从文件读取,值是None
Image.mode #图像的色彩模式,"L"灰度图像、"RGB"真彩色图像、"CMYK"出书图像
Image.size #图像宽度和高度,单元是像素(px),返回值是二元元组(tuple)
Image.palette #调色板属性,返回一个ImagePalette类型
Image类图片有3种转换和保留方式:
Image.save(filename, format) #将图像保留为filename文件名,format是图片格式
Image.convert(mode) #使用差别的参数,转换图像为新的模式
Image.thumbnail(size) #建立图像的缩略图,size是缩略图尺寸的二元元组
Image类图片缩放和旋转方式:
Image.resize(size)#按size巨细调整图像,天生副本
Image.rotate(angle)#按angle角度旋转图像,天生副本
Image类能够对每个像素点或者一幅RGB图像的每个通道单独举行操作,split()方式能够将RGB图像各颜色通道提取出来,merge()方式能够将各自力通道再合成一幅新的图像:
Image.point(func) #凭据函数func功能对每个元素举行运算,返回图像副本
Image.split() #提取RGB图像的每个颜色通道,返回图像副本
Image.merge(mode,bands) #合并通道 ,接纳mode色彩,bands是新色的色彩通道
Image.blend(im1,im2,alpha)
其中Image.blend(im1,im2,alpha)将两幅图片im1和im2根据如下公式插值后天生新的图像: im1 * (1.0-alpha) + im2 * alpha
PIL库的ImageFilter类和ImageEnhance类提供了过滤图像和增强图像的方式,共10种:
ImageFilter.BLUR #图像的模糊效果
ImageFilter.CONTOUR #图像的轮廓效果
ImageFilter.DETAIL #图像的细节效果
ImageFilter.EDGE_ENHANCE #图像的界限增强效果
ImageFilter.EDGE_ENHANCE_MORE #图像的阈值界限增强效果
ImageFilter.EMBOSS #图像的浮雕效果
ImageFilter.FIND_EDGES #图像的界限效果
ImageFilter.SMOOTH #图像的平滑效果
ImageFilter.SMOOTH_MORE #图像的阈值平滑效果
ImageFilter.SHARPEN #图像的锐化效果
ImageEnhance类提供了更高级的图像增强需求,它提供调整色彩度、亮度、对比度、锐化等功能:
ImageEnhance.enhance(factor) #对选择属性的数值增强factor倍
ImageEnhance.Color(im) #调整图像的颜色平衡
ImageEnhance.Contrast(im) #调整图像的对比度
ImageEnhance.Brightness(im) #调整图像的亮度
ImageEnhance.Sharpness(im) #调整图像的锐度
获取缩略图
from PIL importImage
im= Image.open("C:\\bachongying.jpg")
im.thumbnail((128,128))
im.save('1bachongying.jpg')
获取图片轮廓
from PIL importImagefrom PIL importImageFilter
im= Image.open("C:\\bachongying.jpg")
om=im.filter(ImageFilter.CONTOUR)
om.save('bachongying2.jpg')
图片浮雕化
from PIL importImagefrom PIL importImageFilter
im= Image.open("C:\\bachongying.jpg")
om=im.filter(ImageFilter.EMBOSS)
om.save('bachongying3.jpg')
做一幅中文字符画
from PIL importImage
ascii_char= list('学习使我快乐')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)]defmain():
im= Image.open('C:\\bachongying.jpg')
WIDTH, HEIGHT= 100, 60im=im.resize((WIDTH, HEIGHT))
txt= ""
for i inrange(HEIGHT):for j inrange(WIDTH):
txt+= get_char(*im.getpixel((j, i)))
txt+= '\n'fo= open("pic_char.txt","w")
fo.write(txt)
fo.close()
main()
原文链接:https://www.cnblogs.com/lulingboke/p/12702692.html
本站声明:网站内容泉源于网络,若有侵权,请联系我们,我们将及时处置。