pillow模块常用方法

一、代码

from PIL import Image, ImageFilter
from PIL import ImageGrab
from PIL import ImageEnhance

# 读取图像,展示图像
im = Image.open(r"*****")
# im.show()

# 保存图像
# im.save("")

# format图像格式,size图像大小(320, 357)宽高,mode图像模式,常用的模式为:L为灰度图,RGB为真彩色,CMYK为pre-press图像,getbands显示该图像的所有通道
# 每张图片都是由一个或者多个数据通道构成。PIL允许在单张图片中合成相同维数和深度的多个通道。以RGB图像为例,每张图片都是由三个数据通道构成,分别为R、G和B通道。而对于灰度图像,则只有一个通道。
print(im.format, im.size, im.mode, im.info, im.getbands())

r,g,b=im.split()   #分离三通道
pic=Image.merge('RGB',(r,g,b)) #合并三通道
pic.show()

# 转换mode图像模式
new_im = im.convert('L')
# new_im.show()

# 图像过滤
# 高斯模糊
im = im.filter(ImageFilter.GaussianBlur)
# 普通模糊
im = im.filter(ImageFilter.BLUR)
# 边缘增强
im = im.filter(ImageFilter.EDGE_ENHANCE)
# 找到边缘
im = im.filter(ImageFilter.FIND_EDGES)
# 浮雕
im = im.filter(ImageFilter.EMBOSS)
# 轮廓
im = im.filter(ImageFilter.CONTOUR)
# 锐化
im = im.filter(ImageFilter.SHARPEN)
# 平滑
im = im.filter(ImageFilter.SMOOTH)
# 细节
im = im.filter(ImageFilter.DETAIL)
# 最后已经看不清图片了
im.show()

# 屏幕截图
im = ImageGrab.grab((0,0,800,200)) #截取屏幕指定区域的图像
im = ImageGrab.grab() #不带参数表示全屏幕截图

# 图像裁剪与粘贴
box = (120, 194, 220, 294) #定义裁剪区域
region = im.crop(box) #裁剪
region = region.transpose(Image.ROTATE_180)
im.paste(region,box) #粘贴

# 图像缩放
im = im.resize((100,100)) #参数表示图像的新尺寸,分别表示宽度和高度


#亮度增强
enh_bri = ImageEnhance.Brightness(im)
brightness = 1.5
image_brightened = enh_bri.enhance(brightness)
image_brightened.show()

#色度增强
enh_col = ImageEnhance.Color(im)
color = 1.5
image_colored = enh_col.enhance(color)
image_colored.show()

#对比度增强
enh_con = ImageEnhance.Contrast(im)
contrast = 1.5
image_contrasted = enh_con.enhance(contrast)
image_contrasted.show()

#锐度增强
enh_sha = ImageEnhance.Sharpness(im)
sharpness = 3.0
image_sharped = enh_sha.enhance(sharpness)
image_sharped.show()

# 读取base64
import base64
import io
image = '''
iVBORw0KGgoAAAANSUhEUgAAAB0AAAAOCAYAAADT0Rc6AAABdklEQVR42qWUMUgDQRBFDwsrsbGw
EBEsLIJIOpEgIkgQK7tUV4iQIoiFnYi9hcgVQZBUYmEnInIIIQQLEUFSiIgIIiGlnVVKZ+EffL4T
TnHhkezfnZ3d2b8XRX7bMIrUL0L7bVsy4rxJNaNBvBlN6jeh8ZwaNtJwuDVeBoxVs6RzxgqRGvvU
3zUu8H/VKCMmsOaQGNcDxriC0R6S3RgfoGd8Gm0sErh0Sn1F44EnxLOWankLctKMAyzojRUo/kvW
2zTqovU1aYxJSrjL5wFjsSTNO2nfM9OIcS7cw0Cqz1LcAjawTtRRTtbCnHFNOma0jGEi3N2xaCnK
y87XKrScCr3DSD+S9sTebcf6XUq6jPtTTpGYtQ5cXf5v0lDaisMJXgFrDzDmot7pDn4zqliAtW1j
huISnIy5M15F63rlnccHgHnEXaheoriS85yOnKemXogmxGkZiePCjEnZ9CgcWsFJt/K+vVMI+AvT
ssaQcYYndYircNs3bFSWiVYudnIAAAAASUVORK5CYII=
'''
img_data = base64.b64decode(image)
image = io.BytesIO(img_data)
img = Image.open(image)

# 创建一个新图像
# 获取一个Image对象,参数分别是RGB模式。宽,高,三色
image = Image.new('RGB', (90, 35), (255, 255, 255))
# 获取一个画笔对象,将图片对象传过去
draw = ImageDraw.Draw(image)
# 获取一个font字体对象参数是ttf的字体文件的目录,以及字体的大小
font = ImageFont.truetype("csongl.ttf", size=12)
# 在图片上写东西,参数是:定位,字符串,颜色,字体
draw.text((5, 10), '请输入黄色文字', (0, 0, 0), font=font)
 

推荐更多pillow博客地址:https://www.cnblogs.com/chimeiwangliang/p/7130434.html

原文地址:https://www.cnblogs.com/angelyan/p/12738584.html