zoukankan      html  css  js  c++  java
  • 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")



  • 相关阅读:
    使用Regex.Replace只替换字符串一次
    Socket
    [转载]ASP.NET中在不同的子域中共享Session
    C#构造函数
    C# 的 ArrayList
    [转]决定何时使用 DataGrid、DataList 或 Repeater
    window.showModalDialog弹出对话框刷新问题
    ASP.NET] 选择文件夹的对话框
    网页打印javascript:window.print()
    开展工作
  • 原文地址:https://www.cnblogs.com/RChen/p/pil_2.html
Copyright © 2011-2022 走看看