Pillow-处理图像基础

一、官网

https://github.com/python-pillow/pillow

二、安装

pip install pillow
pip list

三、图像基本信息

from PIL import Image

image = Image.open("480.png")

# 图片基本信息
print(image.filename)  # 图片名称
print(image.format) # 图片类型
print(image.mode)
print(image.size) # 图片尺寸
print(image.info)
# 取得某个点的RGB的值
print(image.getpixel((250,250)))

四、图像变换(convert)

from PIL import Image

image = Image.open("480.png")


# 1位像素图 image.convert("1").save("img1_pixels.png",quality=100) # 8位灰度图 image.convert("L").save("imgL_pixels.png",quality=100) # 8位彩图 image.convert("P").save("imgP_pixels.png",quality=100)

五、图像剪切(crop)

from PIL import Image

image = Image.open("480.png")

# 图片剪切:开始点X1,开始点Y1,结束点X2,结束Y2
image.Crop((240,30,300,240)).save("img_crop.png")

六、图像旋转(rotate)

from PIL import Image

image = Image.open("480.png")
image.rotate(30).save("img_rotate_30.png") # 逆时针旋转30度
image.rotate(-30).save("img_rotate_-30.png") # 顺时针旋转30度
image.rotate(30,Image.NEAREST,True).save("img_rotate_30_expand.png") # 逆时针旋转30度 不裁剪

七、调整大小(resize)

from PIL import Image
image = Image.open("480.png")
# 指定大小
img_resize = image.resize((200,200),Image.NEAREST)
img_resize.save("img_resize1.jpg")

# 宽高取半
img_resize = image.resize(int(image.width/2), int(image.height/2)),Image.NEAREST)
img_resize.save("img_resize2.jpg")

八、画图写字

from PIL import Image, ImageDraw, ImageFont

image = Image.open("490.jpg")

image_draw = ImageDraw.Draw(image) # 画笔

# 画线
image_draw.line((0,image.height,image.width,0),fill=(255,0,0),width=8)
# 矩形
image_draw.rectangle((100,100,200,200),fill=(0,255,0))
# 圆形
image_draw.ellipse((250,300,450,400),fill=(0,0,255))
# 写字
image_font = ImageFont.truetype("字体地址", size=48)
image_draw.multiline_text((0,0),"Pillow is good!",fill=(255,255,0),font=image_font)

image.save("img_edited.png")

九、批量文件处理 

import os
import glob
from PIL import Image

files = glob.glob("./*.jpg")

for file in files:
    img = Image.open(file)
    # 宽高取半
    img_resize = img.resize((int(img.width/2), int(img.height/2)))
    ftitle,fext = os.path.splitext(file)
    img_resize.save(ftitle + "half" + fext)

猜你喜欢

转载自www.cnblogs.com/zhouyxh/p/12394045.html