• day30-20180610笔记


    笔记:Python3 图片处理

    一、图片处理

    图像处理是一门应用非常广的技术,而拥有非常丰富第三方扩展库的 Python 当然不会错过这一门盛宴。PIL (Python Imaging Library)是 Python 中最常用的图像处理库,如果你是python2.x,可以通过以下地址进行下载:http://www.pythonware.com/products/pil/index.htm,找到相对应的版本进行下载就可以了。
    注意:PIL模块在python3.x中已经替换成pillow模块,文档地址:http://pillow.readthedocs.io/en/latest/,直接使用pip3 install pillow即可安装模块,导入时使用from PIL import Image.

    爬虫:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/6/11 21:48
    # @Author  : yangyuanqiang
    # @File    : demon1.py
    
    
    #
    # urls = list()
    #
    # for i in range(1, 27):
    #     url = 'http://www.apelearn.com/study_v2/chapter{0}.html'.format(i)
    #     # print(url)
    #     urls.append(url)
    # # print(urls)
    import re
    import requests
    
    
    reg = re.compile(r"<h3>目录列表</h3>s+<ul>s+([sS]*?</ul>)")
    url = "http://www.apelearn.com/study_v2/"
    session = requests.session()
    r = session.get(url)
    # print(r.encoding)
    r.encoding = "utf-8"
    html = r.text
    # print(html)
    htmlli = reg.findall(html)
    # print(htmlli)
    regurl = re.compile(r'''href="(.*?)"''')
    if htmlli[0]:
        result = regurl.findall(htmlli[0])
        # print(result)
    
    urls = list()
    for i in result:
        url = "http://www.apelearn.com/study_v2/{0}".format(i)
        print(url)
        urls.append(urls)
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/6/11 21:49
    # @Author  : yangyuanqiang
    # @File    : demon2.py
    
    
    import codecs
    
    import PyPDF2
    import os
    
    files = list()
    for fileName in os.listdir("aming"):
        if fileName.endswith(".pdf"):
            files.append(fileName)
    
    newFiles = sorted(files, key=lambda d: int(d.split(".pdf")[0]))
    print(newFiles)
    
    
    os.chdir("aming")
    pdfWriter = PyPDF2.PdfFileWriter()#生成一个空白的pdf
    for item in newFiles:
        pdfReader = PyPDF2.PdfFileReader(open(item, "rb"))
        for page in range(pdfReader.numPages):
            pdfWriter.addPage(pdfReader.getPage(page))
    
    with codecs.open("aminglinux.pdf", "wb") as f:
        pdfWriter.write(f)

    图片处理:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/6/11 21:50
    # @Author  : yangyuanqiang
    # @File    : demon3.py
    
    
    '''python3 操作图片需要
    pip install pillow
    '''
    from PIL import Image
    image = Image.open("test.jpg")
    print(image.format, image.size, image.mode)
    image.show()
    
    #image的方法
    #image.show()
    #image.open(file)
    #image.save(outputfile)
    #image.crop(left, upper, right, lower)#抠图
    
    # Image的几何处理:
    # out = im.resize((128, 128))                     #调整图片大小
    # out = im.rotate(45)                             #逆时针旋转 45 度角。
    # out = im.transpose(Image.FLIP_LEFT_RIGHT)       #左右对换。
    # out = im.transpose(Image.FLIP_TOP_BOTTOM)       #上下对换。
    # out = im.transpose(Image.ROTATE_90)             #旋转 90 度角。
    # out = im.transpose(Image.ROTATE_180)            #旋转 180 度角。
    # out = im.transpose(Image.ROTATE_270)            #旋转 270 度角。
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/6/11 21:50
    # @Author  : yangyuanqiang
    # @File    : demon4.py
    
    
    '''python3 操作图片需要
    pip install pillow
    '''
    from PIL import Image
    image = Image.open("test.jpg")
    
    cutjpg = image.crop((320, 65, 460, 220))
    cutjpg.show()
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/6/11 21:51
    # @Author  : yangyuanqiang
    # @File    : demon5.py
    
    
    '''python3 操作图片需要
    pip install pillow
    '''
    from PIL import Image
    image = Image.open("test.jpg")
    position = (320, 65, 460, 220)
    cutjpg = image.crop(position).transpose(Image.ROTATE_180)
    image.paste(cutjpg, position)
    image.show()
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/6/11 21:51
    # @Author  : yangyuanqiang
    # @File    : demon6.py
    
    
    '''python3 操作图片需要
    pip install pillow
    '''
    from PIL import Image
    image = Image.open("test.jpg")
    position = (320, 65, 460, 220)
    cutjpg = image.crop(position).transpose(Image.ROTATE_180)
    image.paste(cutjpg, position)
    
    (x, y) = image.size
    newx = 30
    newy = int(y*newx/x)
    newimage = image.resize((newx, newy))
    newimage.show()
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018/6/11 21:52
    # @Author  : yangyuanqiang
    # @File    : demon7.py
    
    
    import random
    import string
    
    from PIL import Image, ImageFont, ImageDraw, ImageFilter
    
    font_path = "msyh.ttf"
    number = 4
    size = (100, 30)
    bgcolor = (255, 255, 255)
    fontcolor = (0, 0, 255)
    linecolor = (255, 0, 0)
    draw_line = True
    # 加入干扰线条数的上下限
    line_number = 30
    
    
    #生成一个随机字符串
    
    def getNumber():
        source = list(string.ascii_letters) + list(string.digits)
        return "".join(random.sample(source, number))
    
    #绘制干扰线
    def getLine(draw, width, height):
        begin = random.randint(0, width), random.randint(0, height)
        end  = random.randint(0, width), random.randint(0, height)
        draw.line([begin, end], fill=linecolor)
    
    def getCode():
        width, height = size
        image = Image.new("RGBA", size, bgcolor)
        font = ImageFont.truetype(font_path, 25)
        draw = ImageDraw.Draw(image)
        text = getNumber()
        font_width, font_height = font.getsize(text)
        draw.text(((width - font_width) / 2, (height - font_height) / 2), text, font=font, fill=fontcolor)  # 填充字符串
        if draw_line:
            for i in range(line_number):
                getLine(draw, width, height)
    
        # image = image.transform((width + 20, height + 10), Image.AFFINE, (1, -0.3, 0, -0.1, 1, 0), Image.BILINEAR)  # 创建扭曲
        image = image.filter(ImageFilter.EDGE_ENHANCE_MORE)  # 滤镜,边界加强
        image.save('idencode.png')  # 保存验证码图片
        # image.show()
    if __name__ == '__main__':
        getCode()
  • 相关阅读:
    正敲着代码,鼠标坏了!
    DB2 OLAP函数的使用(转)
    修剪矩形
    classpath和环境变量设置(转)
    MyEclipse断点调试JavaScript浅析(转)
    Onunload和onbeforeunload方法的异同
    db2中的coalesce函数(转)
    db2:根据TABLEID找table
    [转]DB2行列转换
    DB2删除数据时的小技巧
  • 原文地址:https://www.cnblogs.com/ivan-yang/p/9170235.html
Copyright © 2020-2023  润新知