PIL 学习笔记(2)

缩放
out = im.resize((128128))

逆时针旋转一定的度数
(需要注意这个方法不会在 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)

颜色模式转换
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")

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")



posted on 2007-03-31 16:23  NeilChen  阅读(1195)  评论(1编辑  收藏  举报

导航