PIL 学习笔记(2)
缩放
逆时针旋转一定的度数
(需要注意这个方法不会在 img 对象上做 in-place 的操作,而是返回一个转换后的新对象:
要按 90 度的整数倍来旋转图片的话,也可以用 transpose 方法
transpose 方法也可以对图片沿 x 或 y 轴翻转
颜色模式转换
如果要在其他模式之间转换,可能需要通过中间模式转换一次(比如可以通过 RGB)
图形增强功能
1. 滤镜
这个功能好像是“细节增强”,试了一下发现变的难看了。
2. 点操作
针对每个像素的操作。通常具有一个参数的函数作为参数:
这个操作改变图片的对比度,对每个像素乘以 1.2 (变得亮一些了)
结合 point 和 paste 可以对图片进行针对性的修改操作,例如:
3. 其他一些图片增强的方法
使用 ImageEnhance 模块中的一些类来完成。
可以用于调整对比度(contrast), 亮度(brightness),颜色对比(color balance),平滑度(sharpness) 等内容。
例:
out = im.resize((128, 128))
逆时针旋转一定的度数
(需要注意这个方法不会在 img 对象上做 in-place 的操作,而是返回一个转换后的新对象:
out = out.rotate(45)
要按 90 度的整数倍来旋转图片的话,也可以用 transpose 方法
transpose 方法也可以对图片沿 x 或 y 轴翻转
out = im.transpose(Image.FLIP_LEFT_RIGHT) # 左右镜像翻转
out = im.transpose(Image.FLIP_TOP_BOTTOM) # 上下镜像翻转
out = im.transpose(Image.ROTATE_90)
out = im.transpose(Image.ROTATE_180)
out = im.transpose(Image.ROTATE_270)
out = im.transpose(Image.FLIP_TOP_BOTTOM) # 上下镜像翻转
out = im.transpose(Image.ROTATE_90)
out = im.transpose(Image.ROTATE_180)
out = im.transpose(Image.ROTATE_270)
颜色模式转换
im = im.convert("L")
如果要在其他模式之间转换,可能需要通过中间模式转换一次(比如可以通过 RGB)
图形增强功能
1. 滤镜
im = im.filter(ImageFilter.DETAIL)
这个功能好像是“细节增强”,试了一下发现变的难看了。
2. 点操作
针对每个像素的操作。通常具有一个参数的函数作为参数:
out = im.point(lambda i: i*1.2)
这个操作改变图片的对比度,对每个像素乘以 1.2 (变得亮一些了)
结合 point 和 paste 可以对图片进行针对性的修改操作,例如:
im = Image.open(r"c:/testimg/a.jpg")
source = im.split()
R,G,B = 0,1,2
# 选择红色值小于 100 的那些区域
mask = source[R].point(lambda i: i / 100 and 255)
# 处理绿色
out = source[G].point(lambda i: i * 0.7)
# 将红色粘贴回来,但仅仅对红色大于 100 的那些像素而言
source[G].paste(out, None, mask)
# 创建一个新的 multiband image
im = Image.merge(im.mode, source)
im.save(r"c:/testimg/e.jpg")
source = im.split()
R,G,B = 0,1,2
# 选择红色值小于 100 的那些区域
mask = source[R].point(lambda i: i / 100 and 255)
# 处理绿色
out = source[G].point(lambda i: i * 0.7)
# 将红色粘贴回来,但仅仅对红色大于 100 的那些像素而言
source[G].paste(out, None, mask)
# 创建一个新的 multiband image
im = Image.merge(im.mode, source)
im.save(r"c:/testimg/e.jpg")
3. 其他一些图片增强的方法
使用 ImageEnhance 模块中的一些类来完成。
可以用于调整对比度(contrast), 亮度(brightness),颜色对比(color balance),平滑度(sharpness) 等内容。
例:
import ImageEnhance
im = Image.open(r"c:/testimg/a.jpg")
enh = ImageEnhance.Contrast(im)
enh.enhance(1.3).show("30% more contrast")
im = Image.open(r"c:/testimg/a.jpg")
enh = ImageEnhance.Contrast(im)
enh.enhance(1.3).show("30% more contrast")