一、代码
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