zoukankan      html  css  js  c++  java
  • 1.1 PIL:Python图像处理类库

    from PIL import Image
    
    img = Image.open('Husky.jpg')
    
    # 看看这货长什么样子
    img
    

    # 看看它的大小
    print('The size of this image is:{0}'.format(img.size))
    
    The size of this image is:(1588, 1257)
    
    # 这货太大了,把它变得小巧些
    img.thumbnail((700, 700))
    
    img
    

    真正改变大小的方法应该是resize(),下面介绍下thumbnail和resize的异同

    • 相同点:两者都接受元组(宽,高)作为新图片的大小;
    • 不同点:
      1. thumbnail是快速生成缩略图的方法,img.thumbnail()直接在img上操作,不可逆;new_img = img.resize(),resize方法会生成一个新的PIL对象并返回
      2. thumbnail生成缩略图是按比例缩放的;而resize是完全按照给定的元组的大小缩放
      3. thumbnail传入的元组不可超过当前图片的大小
    # 验证第3点
    print("执行thumbnail方法之前img的大小为:{0}".format(img.size))
    
    # 输入的元组大小大于(700, 554)
    img.thumbnail((1000, 1000))
    
    print("执行thumbnail方法之后img的大小为:{0}".format(img.size))
    
    # 如果输入元组的大小小于(700, 554),验证第2点
    
    img.thumbnail((500, 500))
    print("再次缩放后img的大小为:{0}".format(img.size))
    
    执行thumbnail方法之前img的大小为:(700, 554)
    执行thumbnail方法之后img的大小为:(700, 554)
    再次缩放后img的大小为:(500, 395)
    
    # 用resize图片变为原来的大小,但是可以看见清晰度比原来低了好几档
    img.resize((1588, 1257))
    

    img
    

    # 得到灰度图
    img_grey = img.convert('L')
    
    img_grey
    

    # 使用crop()方法可以裁剪指定区域
    box = (100, 30, 490, 395)
    region = img_grey.crop(box)
    
    # 看起来更帅了,box是一个四元组。图片以左上角为(0,0)点,box中的4个数字分别代表左上角的x值,左上角的y值,右下角的x值,右下角的y值
    region
    

    # 不能让它这么帅,rotate方法可以让其逆时针旋转一个角度
    rotate_img = region.rotate(90)
    
    rotate_img
    

    # 对原本的图片操作,将旋转的部分粘贴回原图片
    img.paste(rotate_img, box)
    
    # 可以看见图片中有些黑色部分,那是因为box截取的区域并不是一个正方形,宽大于高,旋转过来时原来的高度自然匹配不上原来的宽度
    img
    

  • 相关阅读:
    JVM的基础知识
    tmux常用命令
    JAVA基础—方法覆写、多态
    datetime模块
    time()函数
    Packet Tracer 思科模拟器入门教程 之二 交换机的基本配置与管理
    单元测试前篇
    em
    视口
    浮动
  • 原文地址:https://www.cnblogs.com/shayue/p/10391553.html
Copyright © 2011-2022 走看看