0
点赞
收藏
分享

微信扫一扫

Python编程:pillow对图像的简单处理


图片属性

from PIL import Image

def show_info():
im = Image.open("image.jpg")
print(im.mode) # RGB
print(im.format) # JPEG
print(im.size) # (1200, 800)
print(im.filename) # image.jpg
print(im.width) # 1200
print(im.height) # 800

image.jpg

Python编程:pillow对图像的简单处理_裁剪图片

转换图片格式

jpg -> png

def convert_format():
Image.open("image.jpg").save("image.png")

im = Image.open("image.png")
print(im.mode) # RGB
print(im.format) # PNG

创建缩略图

def create_thumbnail():
im = Image.open("image.jpg")
im.thumbnail((120, 80))
im.save("image_thumbnail.jpg", "PNG")

image_thumbnail.jpg

Python编程:pillow对图像的简单处理_裁剪图片_02

裁剪图片

def crop_iamge():
im = Image.open("image.jpg")
box = (206, 180, 994, 648) # 左上角和右下角坐标,类似qq截图
region = im.crop(box)
region.save("image_region.jpg")

# 处理子图,旋转180度,粘贴回原图
region = region.transpose(Image.ROTATE_180)
im.paste(region, box)
im.save("image_paste.jpg")

image_region.jpg

Python编程:pillow对图像的简单处理_子图_03

image_paste.jpg

Python编程:pillow对图像的简单处理_裁剪图片_04

左右翻转图片

def roll_image():
im = Image.open("image_region.jpg")
image = im.copy()
delta = 2
width_half = image.width // delta

box_left = (0, 0, width_half, image.height)
box_right = (width_half, 0, image.width, image.height)

part_left = image.crop(box_left)
part_right = image.crop(box_right)

image.paste(part_left, box_right)
image.paste(part_right, box_left)

image.save("image_roll.jpg")

image_roll.jpg

Python编程:pillow对图像的简单处理_子图_05

图片的分离和合并

def split_merge():
im = Image.open("image_region.jpg")
r, g, b = im.split()

print(r, g, b)

r.save("r.jpg")
g.save("g.jpg")
b.save("b.jpg")

image = Image.merge("RGB", (r, g, b))
image.save("image_merge.jpg")

r.jpg

Python编程:pillow对图像的简单处理_子图_06

g.jpg

Python编程:pillow对图像的简单处理_裁剪图片_07

b.jpg

Python编程:pillow对图像的简单处理_子图_08

image_merge.jpg

Python编程:pillow对图像的简单处理_子图_09

改变大小

def resize():
im = Image.open("image_region.jpg")
out = im.resize((128, 128))
out.save("image_resize.jpg")

image_resize.jpg

Python编程:pillow对图像的简单处理_子图_10

旋转图片

def rotate():
im = Image.open("image_region.jpg")
out = im.rotate(45)
out.save("image_rotate.jpg")

image_rotate.jpg

Python编程:pillow对图像的简单处理_子图_11

转置图片

逆时针

def transpose():
im = Image.open("image_region.jpg")

# 左右镜像
out = im.transpose(Image.FLIP_LEFT_RIGHT)
out.save("image_flip_left_right.jpg")

# 上下镜像
out = im.transpose(Image.FLIP_TOP_BOTTOM)
out.save("image_flip_top_bottom.jpg")

# 旋转90度
out = im.transpose(Image.ROTATE_90)
out.save("image_rotate_90.jpg")

# 旋转180度
out = im.transpose(Image.ROTATE_180)
out.save("image_rotate_180.jpg")

# 旋转270度
out = im.transpose(Image.ROTATE_270)
out.save("image_rotate_270.jpg")

image_flip_left_right.jpg

Python编程:pillow对图像的简单处理_子图_12

image_rotate_90.jpg

Python编程:pillow对图像的简单处理_裁剪图片_13

转为黑白图片

def convert_l():
im = Image.open('image_region.jpg').convert('L')
im.save("image_l.jpg")

image_l.jpg

Python编程:pillow对图像的简单处理_子图_14

图像增强

from PIL import ImageFilter

def filter():
im = Image.open('image_region.jpg')
im.filter(ImageFilter.DETAIL)
im.save("image_detail.jpg")

image_detail.jpg

Python编程:pillow对图像的简单处理_像素点_15

像素点处理

im = Image.open('image_region.jpg')
out = im.point(lambda i: i * 1.2)
out.save("image_point.jpg")

image_region.jpg

Python编程:pillow对图像的简单处理_裁剪图片_16


参考


  1. ​​PIL 中的 Image 模块​​
  2. ​​Python图像处理库:Pillow 初级教程​​




举报

相关推荐

0 条评论